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