jQuery keypress事件问题

时间:2009-11-26 11:41:06

标签: javascript jquery firefox-3

我有一个函数(filterLeads),我希望在表单字段远离(模糊)和在表单字段中按下回车键时调用它。

$('#filter input, #filter select').blur(filterLeads);
$('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads();}});

模糊效果正常,但我遇到了按键事件的问题。除非在调用filterLeads()之前发生了某些事情,否则事件似乎没有被触发;例如:

$('#filter input, #filter select').keypress(function(e){if(e.which == 13) {alert(e.which);filterLeads();}});

在确认警报(显示正确的密钥代码)后正确调用filterLeads()。

有什么想法吗? (浏览器FF 3.0)

3 个答案:

答案 0 :(得分:2)

我不确定您为什么只定位FF ...但您还应该使用e.keyCode添加all non-FF browsers。另外keypress可能不是根据this information使用的最佳事件。

尝试这样的事情:

$("#filter input, #filter select").keyup(function(e){
 var key = (e.which) ? e.which : e.keyCode;
 if( key == 13 ){ filterLeads(e) }
});

答案 1 :(得分:1)

尝试一下:你应该从匿名函数中return false;,因为否则包含字段的表单(如果有的话)会被提交并重新加载页面。

如果filterLeads期望事件为参数,请不要忘记写:filterLeads(e)

如果没有别的帮助:火blur()

$('#filter input, #filter select').keypress(function(e){$(e.target).blur();});

(jQuery-fied,因为可能附加了自定义jQuery事件)。

答案 2 :(得分:0)

只需在事件处理程序中添加e.preventDefault();,如下所示:

  $('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads(); e.preventDefault(); }});