2011-07-29 16 views
11

jQuery keypress event for FireFox proporciona la propiedad cifrada keyCode para el objeto de evento después de la conversión String.fromCharCode(e.keyCode) pero funciona perfectamente en Chrome.jquery keypress event object keyCode for firefox problem?

A continuación se presenta el código 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> 

Respuesta

19

Debe utilizar e.charCode en Firefox.

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

Inténtelo aquí:

http://jsfiddle.net/REJ4t/

PS Si usted se pregunta por qué todo este lío: http://www.quirksmode.org/js/keys.html

+0

Funcionó como un encanto ... Gracias :) –

+1

e.charCode || e.keyCode <= This is Perfect :) – Jasmeen

+0

Solo tenga en cuenta que según MDN e.keyCode y e.charCode y e.which están en desuso. Me sorprendió un poco porque el reemplazo, llamado e.code, no cuenta con el soporte adecuado. Parece que la única opción ahora es e.key que tiene soporte para IE9 – Mattijs

1

Funciona tanto para IE & FF.

$(document).ready(function(){ 

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

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

     });