Jquery Chosen - 防止按下按键

时间:2012-10-11 13:35:54

标签: javascript jquery javascript-events jquery-chosen

我有一个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键,则会按预期触发监听器。

这必须与关注选定的下拉菜单有关,但我无法理解为什么?有什么想法吗?

2 个答案:

答案 0 :(得分:1)

两件事:

  1. 如果在键入按键事件后动态生成下拉列表中的输入,则事件不会绑定到这些元素。

  2. ID对于一个元素应该是唯一的。如果要将操作绑定到多个元素,请使用类。

  3. 改为使用.on():

    $(".div_search_fields").on("keypress", function(e) { . . . });
    

答案 1 :(得分:1)

我可以看到Jquery选择在keypress事件中使用e.preventDefault(),因此不允许执行代码。应该有一些功能可以覆盖以实现您的目标,或者您可以使用e.preventDefault()。