2013-02-14 137 views
0
$(function(){ 
    $('.inviteClass').keypress(function() { 
     if(event.keyCode=='13') { 
      doPost(); 
     } 
}); 

這裏我有一個小小的需求。按鍵盤輸入提交表單,它工作在Firefox和Chrome,以及IE 7和8很好,但它不是在IE9工作和IE 10「Enter」按鍵提交表單在IE中不工作9/10

請幫助我。

+0

在IE中,jQuery將觸發的keydown(),而不是按鍵()的箭頭鍵,因爲他們被認爲是 '特別' 鍵。 – sasi 2013-02-14 05:44:01

+0

可能重複:HTTP://stackoverflow.com/questions/1427912/in-ie8-enter-key-in-a-form-does-not-work和http://stackoverflow.com/questions/3546140/enter-不提交表單即因隱藏按鈕 – depz123 2013-02-14 05:44:10

+0

@ user1463541否定。這個問題是關於通過捕獲「enter」鍵事件來提交表單的。 – 2013-02-14 06:01:50

回答

8

注意要點:

  1. 你是缺少一個右括號。
  2. 此外,選擇更改爲window
  3. 使用.on()功能
  4. 使用事件的.which財產。見jQuery的documentation
  5. 鍵碼是一個整數 - 刪除引號
  6. 添加return false;到冒泡的形式(也可能提交表單兩次)停止該事件。見Submitting a form on 'Enter' with jQuery?

最終代碼:

$(function() { 
    $(window).on('keydown', function(event) { 
     if(event.which == 13) { 
      doPost(); 
      return false; 
     } 
    }); 
}); 
+0

工作正常......非常感謝...... !!! – Rajasekhar 2013-02-14 14:05:40

+1

'keypress'函數是'.on(「keypress」,handler)'的快捷方式,所以點'3'是無效的。另請參閱:https://api.jquery.com/keypress/。 – 2016-09-22 09:14:09

-1

請儘量使用keydown事件並傳遞事件對象中的函數類似這樣的

$(function(){$('.inviteClass').keydown(function(event){if(event.keyCode=='13'){doPost();}}); 

$(function(){$('.inviteClass').keypress(function(event){if(event.keyCode=='13'){doPost();}}); 

希望這將幫助你

感謝

1

嘗試

$('.inviteClass').keypress(function (e) { 
    c = e.which ? e.which : e.keyCode; 
    if (c == 13) { 
    doPost(); 
    e.preventDefault(); 
    return false; //<---- Add this line 
    } 
}); 
0

必須使用jQuery的event.which,也改變 '13' 至13(右括號也丟失):

$(function(){ 
    $('.inviteClass').keypress(function(event) { 
     if(event.which == 13) { 
      doPost(); 
     } 
    }); 
}); 
+1

你的代碼是錯誤的。最後一個右括號應該是'});'而不僅僅是'}'。 – 2013-02-14 05:56:52

+1

謝謝!我糾正了它 – alijsh 2013-02-14 06:01:54

相關問題