jQuery按键事件问题

发布于 2024-08-13 01:08:52 字数 518 浏览 4 评论 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)

I have a function (filterLeads) that I wish to call both when a form field is moved away from (blur) and when the enter key is pressed within a form field.

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

The blur works correctly but I am having a problem with the keypress event. The event does not appear to be fired unless something comes before the call to filterLeads(); for example:

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

This correctly calls filterLeads() after acknowledging the alert (which shows the correct key code).

Any ideas?
(Browser FF 3.0)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

绿光 2024-08-20 01:08:52

我不知道为什么你只针对 FF...但你还应该包括 所有非 - FF 浏览器,使用e.keyCode。另外,根据 此信息,keypress 可能不是最好使用的事件

尝试这样的事情:

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

I'm not sure why you are only targeting FF... but you should also include all non-FF browsers by using e.keyCode. Also keypress may not be best event to use according to this information.

Try something like this:

$("#filter input, #filter select").keyup(function(e){
 var key = (e.which) ? e.which : e.keyCode;
 if( key == 13 ){ filterLeads(e) }
});
半衬遮猫 2024-08-20 01:08:52

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

如果filterLeads需要事件作为参数,请不要忘记编写:filterLeads(e)

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

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

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

Just a try: You should return false; from within the anonymous function, because else the form (if there is one) containing the fields gets submitted and the page is reloaded.

If filterLeads expects the event as parameter, don't forget to write: filterLeads(e).

And if nothing else helps: Fire blur():

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

(jQuery-fied, because there could be custom jQuery events attached).

煮酒 2024-08-20 01:08:52

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

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

just add e.preventDefault(); inside your event handler, like this:

  $('#filter input, #filter select').keypress(function(e){if(e.which == 13) {filterLeads(); e.preventDefault(); }});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文