Javascript 选择Jquery-防止捕获按键

Javascript 选择Jquery-防止捕获按键,javascript,jquery,javascript-events,jquery-chosen,Javascript,Jquery,Javascript Events,Jquery Chosen,我有一个div(id=div\u search\u字段),其中有几个jQuery选择的下拉列表。附加到div的是一个按键捕捉监听器,如果按下的键是Enter键,则通过单击隐藏的提交按钮提交所选内容 $("#div_search_fields").keypress(function(e) { if (e.which == 13) { $("#hiddenSubmitButton").click(); } }); 出于某种原因,如果我刚刚在所选下拉列表中选择了一个选

我有一个div(id=div\u search\u字段),其中有几个jQuery选择的下拉列表。附加到div的是一个按键捕捉监听器,如果按下的键是Enter键,则通过单击隐藏的提交按钮提交所选内容

$("#div_search_fields").keypress(function(e) {
    if (e.which == 13) {
        $("#hiddenSubmitButton").click();
    }
});
出于某种原因,如果我刚刚在所选下拉列表中选择了一个选项,则不会调用此侦听器。在“div\u search\u fields”div中,我也有一个简单的文本输入框,如果我刚刚在那里输入文本,然后按Enter键,监听器将按预期触发

这一定与关注所选下拉列表有关,但我不明白为什么?有什么想法吗?

两件事:

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

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

  • 改为使用.on():


    据我所知,选中的Jquery在keypress事件中使用了e.preventDefault(),因此它不允许执行您的代码。应该有一些函数可以覆盖以实现您的目标,或者您可以使用e.preventDefault()。

    在将侦听器连接到div“div\u search\u字段”之前,将初始化所选的下拉列表是包含所有下拉列表的div上的唯一id。我只希望在指定div中的某些内容已更改时,Enter键按启动提交(有两个这样的div,每个div都有自己的提交按钮,因此我在每个div上有一个单独的侦听器,侦听Enter键按,然后单击相应的提交按钮)。如果我只有标准的html元素(下拉列表、文本输入),一切都很好。当我使用jqueryselected初始化下拉框时,它会中断。看起来您使用的不是上面示例中选择的JQuery?是的,您是正确的。我没有使用JQuery。我现在正在看。希望我能找到解决办法。目前我可以看到选中的Jquery在keypress事件中使用e.preventDefault(),因此它不允许执行您的代码。应该有一些功能,你可以覆盖,以实现你的目标。你是对的!它是所选javascript中的keydown_checker函数,用于捕获我的按键并防止默认设置。我评论了这一行,所有的作品都很漂亮!如果你在上面编辑你的帖子来这么说,我会把它标记为正确的解决方案…谢谢。太棒了,你得到了你的解决方案。我只是改变了我的答案。我从我的评论中编辑它来回答。
    $(".div_search_fields").on("keypress", function(e) { . . . });