0

我有一个函数(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)

4

3 回答 3

2

我不确定您为什么只针对 FF ......但您还应该使用e.keyCode. keypress根据此信息,也可能不是使用的最佳事件。

尝试这样的事情:

$("#filter input, #filter select").keyup(function(e){
 var key = (e.which) ? e.which : e.keyCode;
 if( key == 13 ){ filterLeads(e) }
});
于 2009-11-26T14:21:46.480 回答
1

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

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

如果没有其他帮助:火blur()

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

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

于 2009-11-26T11:46:58.960 回答
0

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

  $('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads(); e.preventDefault(); }});
于 2009-11-26T11:49:51.810 回答