jQuery:按下Enter键时强制特定按钮单击
我有一个文本框,用户可以在其中输入类别,当他们按enter键时,我想使用jQuery来单击表单中的特定按钮,但到目前为止,这不起作用,而且我看不到任何可能导致问题的语法错误。。它将发回表单,但使用不同的默认按钮,而不是jQuery代码中的按钮jQuery:按下Enter键时强制特定按钮单击,jquery,click,keypress,keycode,Jquery,Click,Keypress,Keycode,我有一个文本框,用户可以在其中输入类别,当他们按enter键时,我想使用jQuery来单击表单中的特定按钮,但到目前为止,这不起作用,而且我看不到任何可能导致问题的语法错误。。它将发回表单,但使用不同的默认按钮,而不是jQuery代码中的按钮 $(document).ready(function() { $('input#newcategory').keypress(function(e) { var KEYCODE_ENTER = 13; if (e.k
$(document).ready(function() {
$('input#newcategory').keypress(function(e) {
var KEYCODE_ENTER = 13;
if (e.keyCode == KEYCODE_ENTER) {
setTimeout(function() {
$('input#addnewcategory').click();
});
return true;
}
});
});
更新:
去掉setTimeout修复了这个问题,尽管我不知道为什么。在我的应用程序的其他区域,我需要它,否则它不会强制按钮单击
$(document).ready(function() {
$('input#newcategory').keypress(function(e) {
var KEYCODE_ENTER = 13;
if (e.keyCode == KEYCODE_ENTER) {
$('input#addnewcategory').click();
return true;
}
});
});
您是否尝试过:
$(document).ready(function() {
$('input#newcategory').keypress(function(e) {
if (e.which == 13) {
$('input#addnewcategory').trigger("click");
}
});
});
这是我的工作代码
$(document).keyup(function(event) {
if (event.keyCode == 13) {
$("#addnewcategory").click();
}
});
您还可以更改代码,将按键按钮事件置于文档中,而不是inputnewcategory
$(document).ready(function() {
$('input#newcategory').keypress(function(e) {
if (e.which == 13) {
setTimeout(function() {
$('input#addnewcategory').click();
});
return true;
}
});
});
在文本输入中按enter键时的默认操作是提交输入所属的表单。因此,在处理按键事件之前,您需要调用
e.preventDefault();
否则,表单将在处理程序执行之前提交。请尝试下面的代码
$(document).ready(function() {
$('input#newcategory').keyup(function(e) {
var KEYCODE_ENTER = 13;
if (e.keyCode == KEYCODE_ENTER) {
setTimeout(function() {
$('input#addnewcategory').click();
});
}
});
});
$('input#addnewcategory').click(function () {
return false;
});
您对setTimeout的调用缺少延迟:
显然这不是必需的。说它是必需的,它不是。根据我的测试,它不是必需的,但它默认为0,所以我仍然建议明确
setTimeout(function(){}, milliseconds)
关于触发事件:
调用单击通常必须来自受信任的事件。我通常将其描述为用户驱动的事件或需要用户交互的事件,但这样可以简化它。所有浏览器可能都不够聪明,无法识别setTimeout中的匿名函数是由可信事件(如按键)触发的
在Firefox中,如果用户调用某个事件,则该事件受信任;如果脚本调用该事件,则该事件不受信任。在Internet Explorer中,除使用createEvent方法创建的事件外,所有事件都受信任
更多关于。if e.keyCode==keyCode\u ENTER{}部分是否运行?或者问题是否存在于$'inputaddnewcategory'。单击;另外,为什么需要setTimeOut?e.keyCode==keyCode_ENTER{}在添加警报时起作用。超时是因为在没有按钮的情况下强制单击按钮时遇到问题;接受它并不能解决问题。您的$'inputaddnewcategory'单击事件处理程序中有什么?