我有一个div(id = div_search_fields),其中有几个jQuery Chosen下拉列表。连接到div我有一个按键捕获监听器,如果按下的键是Enter键,则通过单击隐藏的提交按钮提交所选的东西。
$("#div_search_fields").keypress(function(e) {
if (e.which == 13) {
$("#hiddenSubmitButton").click();
}
});
由于某种原因,如果我刚刚选择了一个选定的下拉列表中的选项,则永远不会调用此侦听器。在“div_search_fields”DIV中我还有一个简单的文本输入框,如果我刚刚输入文本然后按Enter键,则会按预期触发监听器。
这必须与关注选定的下拉菜单有关,但我无法理解为什么?有什么想法吗?
答案 0 :(得分:1)
两件事:
如果在键入按键事件后动态生成下拉列表中的输入,则事件不会绑定到这些元素。
ID对于一个元素应该是唯一的。如果要将操作绑定到多个元素,请使用类。
改为使用.on():
$(".div_search_fields").on("keypress", function(e) { . . . });
答案 1 :(得分:1)
我可以看到Jquery选择在keypress事件中使用e.preventDefault(),因此不允许执行代码。应该有一些功能可以覆盖以实现您的目标,或者您可以使用e.preventDefault()。