【问题标题】:How can I disable the DefaultButton of an asp:Panel at ClientSide?如何在客户端禁用 asp:Panel 的 DefaultButton?
【发布时间】:2011-10-19 01:44:41
【问题描述】:

我有一个asp:Panel,其默认按钮设置为表单的保存按钮。但我希望当焦点位于表单中的一个特定锚元素上时,Enter 键不应触发 Panel 的 DefaultButton。相反,它应该触发在锚点的href 中编写的 Javascript 函数,如果我只是从表单中删除 asp:Panel,它就可以完美地工作。

我尝试了很多解决方案,但似乎都没有奏效。其中一些是:-

  1. 我捕获 focus 锚事件,在该事件中我为 keypress 事件挂钩另一个处理程序并使用 event.preventDefault() 以便仅在此处取消该事件并删除该 @987654325锚元素的blur 上的@ 事件。但这并不能阻止 PanelDefaultButton 被执行。

  2. 在外部面板中使用另一个asp:Panel并将其DefaultButton设置为替换锚元素ImageButton(因为我们不能设置@987654331 @ 到)。 - 但这仍然会触发外部面板DefaultButton

我需要的是在客户端禁用外部asp:PanelDefaultButton 的方法。这可能吗?

【问题讨论】:

    标签: jquery asp.net panel jquery-events preventdefault


    【解决方案1】:

    不太确定您在做什么,但是当您将 DefaultButton 属性添加到 asp:Panel 时,它会在呈现的 div 中添加类似这样的内容:

    onkeypress="javascript:return WebForm_FireDefaultButton(event, 'Button1')"
    

    您可以使用 jQuery 删除该属性,方法如下:

    $("#Panel1").removeAttr("onkeypress");
    

    (假设您的 Panel 的 ClientID 是 Panel1)。希望对您有所帮助!

    【讨论】:

    • 在查找此解决方案之前,我已经通过某种替代方式解决了该问题,但这是我问题的确切答案。因此 +1 并被接受为答案。
    【解决方案2】:

    听起来您在使用 asp.net 控件生成 Javascript 时遇到了一个典型的限制。

    我会编写您自己的函数来处理此表单的提交,然后将必要的逻辑放入其中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 2016-01-30
      • 1970-01-01
      • 2012-07-25
      • 2011-02-04
      • 2021-06-04
      • 2019-09-27
      相关资源
      最近更新 更多