jquery - 在 jquery 上处理多个事件处理程序按键

标签 jquery jquery-ui

我有一个页面,其中有一个表单,我附加了一个 jquery 事件处理程序,通过按键盘上的 Enter 来提交此表单。

//Submit form when enter pressed
$(document).keypress(function (e) {
    if (e.which == 13) {
        $('form').submit();
    }
});

我还可以使用 jquery uidialog() 在同一页面上显示模式。在模态中(在调用dialog()之前它是一个隐藏的div)有一个按钮,我还想让用户在按下键盘上的回车键时能够“单击”该按钮。我遇到的问题是,如果我在页面上使用与之前相同的事件处理程序,它将提交表单并单击按钮。

我该如何处理这个问题,以便第二个事件处理程序仅限于模式/不传播到文档的其余部分?我尝试过 e.stopPropagation 在这种情况下不起作用。

//Handler on the modal
$(document).keypress(function(e) {
    e.stopPropagation();
    if($('#button-doc-validate').is(':visible') && e.which == 13) {
        //Click the button
        $('#button-doc-validate').click();
    }
});

最佳答案

如果您使用 for Submit 处理表单(它将为您处理 Enter 按键)..那么您可以在模态上绑定(bind)按键事件处理程序以分隔两个不同的按键

$('form').submit(function(){}) //- will handle enter keypress and form submit action

$('modal').keypress(function(){}); //- will handle the keypress inside the modal 

因此输入按键将被分开

http://jsfiddle.net/KMAYv/

关于jquery - 在 jquery 上处理多个事件处理程序按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13475352/

相关文章:

jquery - 复选框不会根据单选按钮值发生变化

javascript - jQuery 文件上传,只有单张图片并在上传前重命名

javascript - 按元素 ID 分配工具提示

javascript - JQuery如何知道所有失去焦点的选择

javascript - jQuery UI 对话框上的日期选择器在第二次打开对话框时失败

php - 如何在 Magento 1.7.0.2 中的product\view.phtml 中包含 jquery 选项卡

jquery - 判断 $.ajax 错误是否超时

javascript - jquery 在()之后重置

javascript - 将 jquery 函数绑定(bind)到元素

jquery - 带有 jQ​​uery UI DatePicker 值的 ASP.NET 文本框在回发时丢失