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