【发布时间】:2010-11-17 22:39:08
【问题描述】:
我有一个 aspx 页面,它不应该回发。页面上有两个文本框、两个列表框和两个按钮。如果在任何时候按下回车键,第一个按钮将获得焦点并“单击”,从而导致列表框中的选择丢失。
如何禁用此功能?有大量关于如何捕获输入按钮和执行方法的教程,但我找不到关于如何简单地禁用上面提到的简洁的“让我抓住我找到的第一个按钮并单击它”功能的教程。
【问题讨论】:
我有一个 aspx 页面,它不应该回发。页面上有两个文本框、两个列表框和两个按钮。如果在任何时候按下回车键,第一个按钮将获得焦点并“单击”,从而导致列表框中的选择丢失。
如何禁用此功能?有大量关于如何捕获输入按钮和执行方法的教程,但我找不到关于如何简单地禁用上面提到的简洁的“让我抓住我找到的第一个按钮并单击它”功能的教程。
【问题讨论】:
如果我想完全阻止 Enter 时的回发,我更喜欢第二个。
【讨论】:
Image。或者看看解决这个问题的这个问题:stackoverflow.com/questions/1561400/…
你在使用 jQuery 吗?
如果是这样:
$(document).keypress(function(e)
{
if(e.keyCode === 13)
{
e.preventDefault();
return false;
}
});
【讨论】:
i.e username/password textbox)
document 替换为一个选择器,该选择器正好针对那些应该抑制 Enter 键的输入。使用纯 JS 绕过 jQuery 也很容易,但毫无意义。
使用以下代码禁用导致回发的回车键。这段代码将阻止所有浏览器 4.0 以上的 enter 键,除非在 Textarea 或提交按钮本身上按下 enter。
<script language="JavaScript">
var nav = window.Event ? true : false;
if (nav) {
window.captureEvents(Event.KEYDOWN);
window.onkeydown = NetscapeEventHandler_KeyDown;
} else {
document.onkeydown = MicrosoftEventHandler_KeyDown;
}
function NetscapeEventHandler_KeyDown(e) {
if (e.which == 13 && e.target.type != 'textarea' && e.target.type != 'submit') {
return false;
}
return true;
}
function MicrosoftEventHandler_KeyDown() {
if (event.keyCode == 13 && event.srcElement.type != 'textarea' &&
event.srcElement.type!= 'submit')
return false;
return true;
}
</script>
【讨论】:
只把这个放在你的 ASP.Net TextBox 控件上:
<asp:TextBox ID="TextBox1" runat="server"
onkeydown = "return (event.keyCode!=13);" >
</asp:TextBox>
【讨论】:
这是 Web 应用程序的默认行为,您可以使用找到的教程之一并隐藏该行为,只需放弃提交即可。
【讨论】:
<body onkeydown = "return (event.keyCode!=13)">
【讨论】: