2016-06-30 5 views
0

Ich hoffe, dass ich gerade etwas verpasst haben hier wirklich einfach, ich den Code aus dem Tutorial unten bin mit:Jquery Funktion zu wiederholen, wenn benutzerdefinierte Tastatur

http://code.tutsplus.com/tutorials/creating-a-keyboard-with-css-and-jquery--net-5774

Das Projekt ist ein Popup-Tastatur für ein haben Touchscreen, ich habe aus verschiedenen Gründen einige Änderungen vorgenommen und jedes Mal, wenn ich auf ein separates Textfeld klicke und die Tasten eintrage, bekomme ich die doppelten Zeichen im Feld.

-Code unten:

<!DOCTYPE html> 

<html> 
    <head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index</title> 
    <link href="~/Content/keyboard_css.css" rel="stylesheet" /> 
    </head> 
    <body> 

    <div id="container"> 
     <label>Client Name</label><div class="tbx" id="tbx_1" contenteditable></div> 
     <div class="tbx" id="tbx_2" contenteditable></div> 
     <div class="tbx" id="tbx_3" contenteditable></div> 
     <div class="tbx" id="tbx_4" contenteditable></div> 
     <div class="tbx" id="tbx_5" contenteditable></div> 

     <ul id="keyboard"> 
      <li class="symbol"><span class="off">`</span><span class="on">~</span></li> 
      <li class="symbol"><span class="off">1</span><span class="on">!</span></li> 
      <li class="symbol"><span class="off">2</span><span class="on">@@</span></li> 
      <li class="symbol"><span class="off">3</span><span class="on">#</span></li> 
      <li class="symbol"><span class="off">4</span><span class="on">$</span></li> 
      <li class="symbol"><span class="off">5</span><span class="on">%</span></li> 
      <li class="symbol"><span class="off">6</span><span class="on">^</span></li> 
      <li class="symbol"><span class="off">7</span><span class="on">&amp;</span></li> 
      <li class="symbol"><span class="off">8</span><span class="on">*</span></li> 
      <li class="symbol"><span class="off">9</span><span class="on">(</span></li> 
      <li class="symbol"><span class="off">0</span><span class="on">)</span></li> 
      <li class="symbol"><span class="off">-</span><span class="on">_</span></li> 
      <li class="symbol"><span class="off">=</span><span class="on">+</span></li> 
      <li class="delete lastitem">DEL</li> 
      <li class="tab">TAB</li> 
      <li class="letter">q</li> 
      <li class="letter">w</li> 
      <li class="letter">e</li> 
      <li class="letter">r</li> 
      <li class="letter">t</li> 
      <li class="letter">y</li> 
      <li class="letter">u</li> 
      <li class="letter">i</li> 
      <li class="letter">o</li> 
      <li class="letter">p</li> 
      <li class="symbol"><span class="off">[</span><span class="on">{</span></li> 
      <li class="symbol"><span class="off">]</span><span class="on">}</span></li> 
      <li class="symbol lastitem"><span class="off">\</span><span class="on">|</span></li> 
      <li class="capslock">CAPS</li> 
      <li class="letter">a</li> 
      <li class="letter">s</li> 
      <li class="letter">d</li> 
      <li class="letter">f</li> 
      <li class="letter">g</li> 
      <li class="letter">h</li> 
      <li class="letter">j</li> 
      <li class="letter">k</li> 
      <li class="letter">l</li> 
      <li class="symbol"><span class="off">;</span><span class="on">:</span></li> 
      <li class="symbol"><span class="off">'</span><span class="on">&quot;</span></li> 
      <li class="return lastitem">ENTER</li> 
      <li class="left-shift">SHIFT</li> 
      <li class="letter">z</li> 
      <li class="letter">x</li> 
      <li class="letter">c</li> 
      <li class="letter">v</li> 
      <li class="letter">b</li> 
      <li class="letter">n</li> 
      <li class="letter">m</li> 
      <li class="symbol"><span class="off">,</span><span class="on">&lt;</span></li> 
      <li class="symbol"><span class="off">.</span><span class="on">&gt;</span></li> 
      <li class="symbol"><span class="off">/</span><span class="on">?</span></li> 
      <li class="hide">HIDE</li> 
      <li class="space lastitem">&nbsp;</li> 
     </ul> 

    </div> 

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> 

    </body> 
</html> 

<script> 

    $(document).ready(function() { 

     // Hide Keyboard on load 
     $('#keyboard li').hide(); 
    }); 


    $(function(){ 
    // Show Keyboard on click 
    $('.tbx').click(function() { 
     $('#keyboard li').show(); 

     inputBox = $(this).attr('id'); 
     //alert(inputBox); 

     i = '#'; 
     GetId = i.concat(inputBox); 
     $write = $(GetId), 
     shift = false, 
     capslock = false; 

     $('#keyboard li').click(function() { 
      $this = $(this), 
      character = $this.html(); // If it's a lowercase letter, nothing happens to this variable 

      // Shift keys 
      if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) { 
      $('.letter').toggleClass('uppercase'); 
      $('.symbol span').toggle(); 

      shift = (shift === true) ? false : true; 
      capslock = false; 
      return false; 
      } 

      // Hide Keyboard 
      if ($this.hasClass('hide')) { 
      $('#keyboard li').hide(); 
      return false; 
      } 

      // Caps lock 
      if ($this.hasClass('capslock')) { 
      $('.letter').toggleClass('uppercase'); 
      capslock = true; 
      return false; 
      } 

      // Delete 
      if ($this.hasClass('delete')) { 
      html = $write.html(); 
      $write.html(html.substr(0, html.length - 1)); 

      return false; 
      } 

      // Special characters 
      if ($this.hasClass('symbol')) character = $('span:visible', $this).html(); 
      if ($this.hasClass('space')) character = ' '; 
      if ($this.hasClass('tab')) character = "\t"; 
      if ($this.hasClass('return')) character = "\n"; 

      // Uppercase letter 
      if ($this.hasClass('uppercase')) character = character.toUpperCase(); 

      // Remove shift once a key is clicked. 
      if (shift === true) { 
      $('.symbol span').toggle(); 
      if (capslock === false) $('.letter').toggleClass('uppercase'); 

      shift = false; 
      } 

      // Add the character 
      $write.html($write.html() + character); 
     }); 
     }); 
    }); 


</script>' 
+1

Immer wenn Sie eine Variable deklarieren, müssen Sie 'var' – Yuri

Antwort

0

Sie binden an #keyboard li jedes Mal klicken Sie auf Eingaben klicken. Fügen Sie einfach unbind() vor, klicken Sie wie diese $('#keyboard li').unbind().click(function()

+0

voranstellen Wo sehen Sie, dass binden? – Yuri

+0

Durch Aufrufen von '$ ('# keyboard li') klicken Sie auf' '' ('. Tbx'). Klicken Sie auf 'Sie binden den Klick auf li-Ereignis mit der Funktion, die jedes Mal folgt, wenn Sie auf eine Eingabe klicken. –

+0

Arbeitete eine Belohnung, ich musste besser auf Bindung lesen ... Vielen Dank! –

0

Vor allem empfehle ich Ihnen, Ihren Code zu beheben, das Hinzufügen var bei Bedarf und nisten richtig (wenn es wirklich erforderlich)

$(document).ready(function() { 
    var $write, shift, capslock; //declared globally 

    // Hide Keyboard on load 
    $('#keyboard li').hide(); 

    $('.tbx').click(function() { 

     $('#keyboard li').show(); 


     var inputBox = $(this).attr('id'), 
      i = '#', 
      GetId = i.concat(inputBox); 
     $write = $(GetId); 
     shift = false; 
     capslock = false; 
    }); 

    $('#keyboard li').click(function() { 
     var $this = $(this), 
      character = $this.html(); // If it's a lowercase letter, nothing happens to this variable 

     // Shift keys 
     if ($this.hasClass('left-shift') || $this.hasClass('right-shift')) { 
      $('.letter').toggleClass('uppercase'); 
      $('.symbol span').toggle(); 

      shift = (shift === true) ? false : true; 
      capslock = false; 
      return false; 
     } 

     // Hide Keyboard 
     if ($this.hasClass('hide')) { 
      $('#keyboard li').hide(); 
      return false; 
     } 

     // Caps lock 
     if ($this.hasClass('capslock')) { 
      $('.letter').toggleClass('uppercase'); 
      capslock = true; 
      return false; 
     } 

     // Delete 
     if ($this.hasClass('delete')) { 
      var html = $write.html(); 

      $write.html(html.substr(0, html.length - 1)); 

      return false; 
     } 

     // Special characters 
     if ($this.hasClass('symbol')) character = $('span:visible', $this).html(); 
     if ($this.hasClass('space')) character = ' '; 
     if ($this.hasClass('tab')) character = "\t"; 
     if ($this.hasClass('return')) character = "\n"; 

     // Uppercase letter 
     if ($this.hasClass('uppercase')) character = character.toUpperCase(); 

     // Remove shift once a key is clicked. 
     if (shift === true) { 
      $('.symbol span').toggle(); 
      if (capslock === false) $('.letter').toggleClass('uppercase'); 

      shift = false; 
     } 

     // Add the character 
     $write.html($write.html() + character); 


    }); 
}); 

Dann, wenn alle Code ist korrekt und lesbar, Sie können durch sie auf der Suche nach Fehlern gehen

Verwandte Themen