【问题标题】:enter key in asp.net firing wrong button在asp.net中输入键触发错误按钮
【发布时间】:2010-08-12 11:11:08
【问题描述】:

我有一个文本框和许多按钮。当用户在某个文本框中并按下“enter”键时,会引发特定的按钮单击事件。我在网上看到“enter”键存在一些问题,我尝试了一些解决方案,但它仍然总是输入那个按钮事件(那个按钮是页面中的第一个按钮)。

我尝试创建一个不执行任何操作的按钮并将其写入 page_load:

idTextBoxFA.Attributes.Add("onkeydown","if(event.which || event.keyCode){if ((event.which == 13) || (event.keyCode == 13)) {document.getElementBtId('" + noEnterButton.UniqueID + "').click();return false;}} else {return true}; ");

我所有的页面控件都在一个表单中,我尝试将表单“defaultButton”属性赋予我创建的那个按钮。那也没用。

知道为什么这不起作用以及我做错了什么吗?

【问题讨论】:

  • 这两个问题非常相似,以至于我不确定要标记哪一个。 StackOverflow 的趋势是选择更清晰和格式更好的问题,而不是最先发布的问题。然而,在这种情况下,即使措辞也足够相似,所以我选择了更受欢迎的问题和获得更多选票的问题。对不起。

标签: asp.net defaultbutton


【解决方案1】:

在 ASP.NET 中控制按下 ENTER 时激活哪个提交按钮的标准方法是将控件和按钮包装在 asp:Panel 中,并将 DefaultButton 属性设置为正确的按钮。

如果我正确阅读了您的问题,您只希望在按下 ENTER 时激活一个特定按钮,因此将页面上的所有内容包装在一个 asp:Panel 中。

<asp:Panel id="pnlDefaultButton" runat="server" DefaultButton="btnOK">
    <!-- All controls here including: -->
    <asp:Button id="btnOK" runat="server" Text="OK" />
</asp:Panel>

【讨论】:

  • asp:Content 怎么样?我使用母版页,我的页面上没有面板或表单。
  • @Marcel - 我不确定你的意思。使用母版页并没有太大变化,除非按钮位于一个内容部分,而页面的其他部分位于其他位置。在这种情况下,您可以重新排列您的内容,或寻找纯 JavaScript 解决方案。
  • @Jason Berkan:我现在确实像这里描述的那样:stackoverflow.com/a/3313285/79485
【解决方案2】:

不需要面板。 只需使用以下内容:

UseSubmitBehavior="false"

【讨论】:

    【解决方案3】:

    请使用

    idTextBoxFA.Attributes.Add("onkeypress", "javascript:var evnt = window.event";
    if(evnt.keyCode==13)
    {
    document.getElementById('" + noEnterButton.ClientID + "').click();
    }
    else{};");
    

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2017-06-20
      相关资源
      最近更新 更多