Javascript 如何处理默认按钮的按键?

Javascript 如何处理默认按钮的按键?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我想我可以通过检查是否按下enter键并处理它来处理不点击默认按钮(在我的asp.net母版页上)的问题。基本上,当用户在任何输入类型字段上点击enter时,它实际上会在我的表单上执行我的默认按钮事件(如前所述,它是母版页上允许全局搜索的按钮) 所以用户们说,嘿,等一下,我在输入栏上按了回车键,为什么我突然出现在搜索结果页面上……我不怪他们 我想我应该这样处理: $(document).keypress(function (e) { if (e.which == 13)

我想我可以通过检查是否按下enter键并处理它来处理不点击默认按钮(在我的asp.net母版页上)的问题。基本上,当用户在任何输入类型字段上点击enter时,它实际上会在我的表单上执行我的默认按钮事件(如前所述,它是母版页上允许全局搜索的按钮)

所以用户们说,嘿,等一下,我在输入栏上按了回车键,为什么我突然出现在搜索结果页面上……我不怪他们

我想我应该这样处理:

    $(document).keypress(function (e) {
        if (e.which == 13) {
            return false;
        }
    });

这个问题不再发生了,我很高兴…直到我发现我的所有按钮,比如我的jquery对话框,当你点击它们并按下回车键时,不再执行…我明白了原因,因为我返回false。但是,如果您关注的是一个例如asp.net按钮,那么我应该如何构造它以避免这种情况发生?

您应该只关注句柄文本框

$('input[type=text]').keypress(function (e) {
    if (e.which == 13) {
        return false;
    }
});
编辑

根据评论,我可以将此添加到我的site.master页面中,但忽略一个特定的文本框吗

排除文本字段

$('input[type=text]').not('.search').keypress(function (e) {
    if (e.which == 13) {
        return false;
    }
});
这里我有一个,在最后一个文本框(搜索)事件没有关联

使用事件委派方法

$(document).on('keypress', 'input[type=text]:not(.search)', function (e) {
    if (e.which == 13) {
        alert('Enter pressed')
    }
});

您甚至需要绑定到页面上的确切元素:

$('.aspNetButton').on('keypress', (function (e) {
    if (e.which == 13) {
        return false;
    }
});

但是我觉得把这些添加到我所有的页面上不是一个好办法。我是否可以在我的site.master页面中添加此项,但忽略一个特定的文本框,即controlid=search的文本框?原因是我的母版页包含此文本框
#search
,用于执行全局搜索,因此我想排除此文本框,但不排除任何其他文本框。@john,是的,可以实现。我建议您添加伪css类名,比如说
search
,而不是使用控件id@JonH,我已经更新了答案,只需在主文件中使用此代码。