我有一个aspx页面,它在不应该的时候进行了回发。页面上有两个文本框、两个列表框和两个按钮。如果在任何时候按下回车键,第一个按钮将获得焦点并被“点击”,导致列表框中的选择丢失。
如何禁用此功能?有很多教程可以捕获回车按钮并执行方法,但我找不到一个简单地禁用上述功能的好方法。
如果我想要完全防止按 Enter 键时出现 Postback,我会更喜欢第二种方法。
你是否正在使用jQuery?
如果是的话:
$(document).keypress(function(e)
{
if(e.keyCode === 13)
{
e.preventDefault();
return false;
}
});
document
替换为一个选择器,以精确地定位应该抑制 Enter 键的输入框非常容易。然而,通过使用纯 JS 来规避 jQuery 也很容易,尽管毫无意义。 - Roland<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文本框控件中:
<asp:TextBox ID="TextBox1" runat="server"
onkeydown = "return (event.keyCode!=13);" >
</asp:TextBox>
<body onkeydown = "return (event.keyCode!=13)">
这是 Web 应用程序的默认行为,您可以参考其中一个教程并通过放弃提交来隐藏该行为。