【问题标题】:ASP.Net page enter key causing post backASP.Net 页面输入键导致回发
【发布时间】:2010-11-17 22:39:08
【问题描述】:

我有一个 aspx 页面,它不应该回发。页面上有两个文本框、两个列表框和两个按钮。如果在任何时候按下回车键,第一个按钮将获得焦点并“单击”,从而导致列表框中的选择丢失。

如何禁用此功能?有大量关于如何捕获输入按钮和执行方法的教程,但我找不到关于如何简单地禁用上面提到的简洁的“让我抓住我找到的第一个按钮并单击它”功能的教程。

【问题讨论】:

标签: c# asp.net postback


【解决方案1】:
  • 您可以在表单或面板上设置DefaultButton。这样您就可以完全控制所发生的事情。
  • 在您的按钮上设置UseSubmitBehavior="False"。这会禁用 Enter 上的“AutoPostback”。

如果我想完全阻止 Enter 时的回发,我更喜欢第二个。

【讨论】:

  • 如果它是一个图像按钮 .. 解决方案是什么。??
  • @SRJ:您可以改用Image。或者看看解决这个问题的这个问题:stackoverflow.com/questions/1561400/…
  • 使用“”和按钮的属性“UseSubmitBehavior”为false是我解决类似问题的方法。这是源代码的一部分:pastebin.com/9hXJBrmk
【解决方案2】:

你在使用 jQuery 吗?

如果是这样:

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

【讨论】:

  • 这不会阻止回车键在 textarea 中插入空行吗?
  • 当焦点位于输入按下应该调用提交的文本框中时,它也会停止输入按下的提交行为 (i.e username/password textbox)
  • 很好的解决方案。 @sohaiby @Tony_Henrich 很容易将 document 替换为一个选择器,该选择器正好针对那些应该抑制 Enter 键的输入。使用纯 JS 绕过 jQuery 也很容易,但毫无意义。
【解决方案3】:

使用以下代码禁用导致回发的回车键。这段代码将阻止所有浏览器 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>

【讨论】:

  • 我尝试使用许多不同的 javascript 事件处理程序来取消在 Enter 上提交的 asp 表单,但没有一个比这个更有效。我可以更改“return false;”行到另一个 javascript 方法总是让 Enter 提交我想要的数据。谢谢!
【解决方案4】:

只把这个放在你的 ASP.Net TextBox 控件上:

<asp:TextBox ID="TextBox1" runat="server"
   onkeydown = "return (event.keyCode!=13);" >
</asp:TextBox>

【讨论】:

    【解决方案5】:

    这是 Web 应用程序的默认行为,您可以使用找到的教程之一并隐藏该行为,只需放弃提交即可。

    【讨论】:

      【解决方案6】:
      <body onkeydown = "return (event.keyCode!=13)">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 2013-10-29
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多