2011-07-29 54 views
11

針對FireFox的jQuery按鍵事件爲String.fromCharCode(e.keyCode)轉換後的事件對象 提供加密的keyCode屬性,但在Chrome中完美運行。jquery keypress事件對象keyCode for firefox問題?

以下是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> 

回答

19

你應該在Firefox中使用e.charCode

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

嘗試在這裏:

http://jsfiddle.net/REJ4t/

PS 如果你想知道爲什麼這一切混亂:http://www.quirksmode.org/js/keys.html

+0

工作就像一個魅力...謝謝:) –

+1

e.charCode || e.keyCode <=這是完美:) – Jasmeen

+0

請注意,根據MDN e.keyCode和e.charCode和e.which已棄用。我對此感到有點驚訝,因爲替換名爲e.code沒有適當的支持。它似乎只有選項現在是IE9支持的e.key – Mattijs

1

它同時適用於IE & FF。

$(document).ready(function(){ 

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

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

     });