2013-02-14 134 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

相关问题