【问题标题】:How to disable link button after click (no JQuery)单击后如何禁用链接按钮(无 JQuery)
【发布时间】:2014-04-23 12:21:13
【问题描述】:

我想在用户点击链接按钮后禁用它。
但是我在这里做错了。

点击后按钮仍处于启用状态。我做错了什么?

<asp:LinkButton ID="submit" runat="server" 
        CssClass="button" 
        Text="OK" 
        OnClick="Submit_Click" 
        OnClientClick="this.disabled=true">
</asp:LinkButton>

【问题讨论】:

  • 如果它正在回发,我相信该按钮将恢复为启用状态。您可能希望在代码隐藏而不是客户端禁用它。
  • 没有。在后面的代码中,我设置了 enabled=false 并在回发后将其禁用。但是用户可以在提交之前快速单击按钮并执行多个操作,我需要防止这种情况发生。
  • 这是有道理的。您是否在控制台中收到错误消息?
  • 在后面的代码中设置它只会在页面重新加载后产生影响。单击按钮后立即保持启用状态
  • 另外,我会将其移至 javascript 函数,并调试 this 以查看我们实际处理的元素。

标签: javascript asp.net javascript-events


【解决方案1】:

只需将return false; 提供给您的 JavaScript。原因是你的asp:LinkButton 被渲染成这样。

<a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$submit','')" 
   class="button" 
   id="ContentPlaceHolder1_submit" 
   onclick="this.disabled = true;return false;">
OK</a>

所以,如果你不给return false,就会发生这些事情

  1. 它触发 onclick 事件并禁用锚标记。(锚标记没有禁用属性。buttoninput type="submit" 具有该属性。)
  2. 它继续触发回发并触发服务器端点击事件
  3. 由于存在回发,客户端 JavaScript 禁用不会持续存在(即使它是一个按钮)

通过强制执行return false,您要求asp:LinkButton 不再进行处理。

P.S:我一直在使用PostBack Ritalin 来防止多次点击asp:Button。 IMO,在这种情况下绝对值得一看。

【讨论】:

    【解决方案2】:

    使用 javascript 调试器检查正在调用的方法。 LinkBut​​tons 是服务器生成的 javascript 支持的锚标记,因此可能很棘手。

    【讨论】:

      【解决方案3】:

      试试这个java脚本函数,

      在您的 OnClientClick

          <asp:LinkButton  ID="submit" CssClass="button"  Text="OK" onclick="myButtonId_Click(this);return false;" ></asp:LinkButton>
      

      添加功能,

          protected void myButtonId_Click(target) {
           target.disabled = true;
          }
      

      【讨论】:

      • 隐藏按钮,而不是禁用它,只有在页面重新加载后才会有所不同。
      • 在回发后仍然可以在服务器端工作,而不是在 OP 请求之前
      猜你喜欢
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多