我有一个网络表单,当用户点击输入时,该页面将被发回。事情是这样的:当用户单击表单时,将聚焦一个控件(我的鼠标指针变为当您要单击输入控件时的那个),当按下回车键时,我的页面将重新加载。
有没有办法捕捉任何键的按下,不管用户点击哪里?
我有一个网络表单,当用户点击输入时,该页面将被发回。事情是这样的:当用户单击表单时,将聚焦一个控件(我的鼠标指针变为当您要单击输入控件时的那个),当按下回车键时,我的页面将重新加载。
有没有办法捕捉任何键的按下,不管用户点击哪里?
//Jquery example:
//Bind this keypress function to all of the input tags
$("input").keypress(function (evt) {
//Deterime where our character code is coming from within the event
var charCode = evt.charCode || evt.keyCode;
if (charCode == 13) {
//Enter key's keycode
return false;
}
});
如果您想防止在按下 Enter 时“单击”按钮并防止在用户处于输入控件时发生回发/提交,您需要将按钮设置为不回发或我过去所做的事情设置了一个按钮,在我遇到的情况下,它不会设置为我的面板的默认按钮。
<asp:Panel ID="pPanel" runat="server" DefaultButton="bDefault">
<%-- here are all the input controls and a button that
now must be physically clicked to submit--%>
</asp:Panel>
<asp:Button ID="bDefault" runat="server" Text="" CssClass="hidden" OnClientClick="return false;" />
return false OnClientClick 导致按钮不回发。
您可以使用 jquery 并注册 keyup 事件,只关注返回键。然后你只需要确保你对给定的这个值做出正确的反应。
$(document).on('keydown', function(e){ //逻辑 }
您可以通过捕获KeyCode 13在 body 标记中禁用此功能,但不确定跨浏览器的兼容性如何。
<body onkeydown = "return (event.keyCode!=13)">