2011-07-29 10 views
11

Zdarzenie keypress jQuery dla FireFox daje zaszyfrowaną właściwość keyCode dla obiektu zdarzenia po konwersji String.fromCharCode(e.keyCode), ale działa idealnie w Chrome.jquery keypress obiekt zdarzenia keyCode dla problemu firefox?

Poniżej znajduje się kod javascript:

<!-- #booter and #text are ids of html element textarea --> 

<script type="text/javascript">   
    $(function(){ 
     $('#booter').keypress(function(e){    
      var input = $(this).val() + String.fromCharCode(e.keyCode); 
      $('#text').focus().val(input); 
      return false; 
     }); 
    }); 
</script> 

Odpowiedz

19

Należy użyć e.charCode w Firefoksie.

$("#booter").keypress(function(e){ 
    var code = e.charCode || e.keyCode; 
    var input = $(this).val() + String.fromCharCode(code); 
    $('#text').focus().val(input); 
    return false; 
}); 

Wypróbuj go tutaj:

http://jsfiddle.net/REJ4t/

PS Jeśli zastanawiasz się, dlaczego cały ten bałagan: http://www.quirksmode.org/js/keys.html

+0

Pracowałem jak czar ... Dzięki :) –

+1

e.charCode || e.keyCode <= To jest idealne :) – Jasmeen

+0

Należy pamiętać, że zgodnie z MDN e.keyCode i e.charCode oraz e., które są przestarzałe. Byłem trochę zdumiony tym, że od zastąpienia, o nazwie e.code, nie ma odpowiedniego wsparcia. Wydaje się, że jedyną opcją jest teraz e.key, który ma wsparcie IE9 – Mattijs

1

Działa zarówno dla IE & FF.

$(document).ready(function(){ 

     $('#txtEntry').keypress(function (e) { 

      $('#lnkValidEdit').focus(); 
      return false; 

     }); 
Powiązane problemy