【问题标题】:Disable the button after clicking the button once单击按钮一次后禁用该按钮
【发布时间】:2014-02-25 14:15:42
【问题描述】:

在我的应用程序中,我需要在单击按钮后禁用该按钮,以便用户不应多次单击。应用程序是 MVC ASP.NET 我已经在普通的 asp.net 应用程序中完成了这项工作。 我尝试了下面的代码行,但它不起作用

提前致谢

已编辑 我怎样才能使用 javascript 来实现呢?

【问题讨论】:

标签: javascript asp.net-mvc


【解决方案1】:

我发现使用 IE8(我不确定其他版本的 IE)如果禁用单击事件上的按钮,则无法提交表单。所以我想出了一个替代解决方案。隐藏单击的按钮并在其位置放置一个新的禁用按钮。代码如下:

$().ready(function() {
  $("someButtonSelector").click(function () {
    $(this).hide();
    $(this).after('<input type="button" disabled="disabled" value="' + $(this).val() + '" />');
    return true;
  });
});

【讨论】:

    【解决方案2】:

    你可以试试这个:

    onclick="if (this.getAttribute('clicked') == '1') { return false; } else { this.setAttribute('clicked', '1'); }"
    

    它不会禁用任何东西,只是阻止第一次点击后的点击事件。

    【讨论】:

    • +1 是一个很棒但被低估的解决方案。 IMO,您不需要实际查看按钮的禁用样式。让用户快速点击任意次数。开发人员关心的是避免重复发布。
    【解决方案3】:
    <button type="button" onclick="this.disabled = 'disabled';">Click Me!</button>
    

    虽然 Button Web 控件呈现为提交:

    <input type="submit" onclick="this.disabled = 'disabled';" value="Submit" />
    

    【讨论】:

    • 抱歉,它在 MVC 应用程序中不起作用。您可以在 ASP.NET 应用程序中执行此操作,但不能在 MVC 中执行此操作
    • @prakash:无论是 ASP.NET 还是 ASP.NET-MVC,这两种方法都可以使用。您可以发布您尝试过但不起作用的内容吗?
    【解决方案4】:

    @prakash 你用 jQuery 禁用甚至隐藏按钮了吗?

    如果您的按钮 id 是“btnClickMe”,那么下面的 jQuery 将完成这项工作。

    $("#btnClickMe").hide();
    

    你也可以使用jQuery设置di​​sbaled属性;

    $("#btnClickMe").attr("disabled","disabled");
    

    上面的一个未经测试,但应该可以工作。

    【讨论】:

    • Nup 它不工作.. 它禁用按钮但表单没有提交
    【解决方案5】:

    我发现,如果您禁用甚至删除按钮或输入元素,它将停止对服务器的回调,最简单的处理方法是 hide(),因为您没有删除输入按钮的功能/随便

        $('input_selector').click(function () {
          $(this).hide(200/whatever);
          $(this).before('<p>Waiting for server to respond?!?</p><br/>')
        });
    

    因为它是隐藏的,所以 br 是为了确保 p 标签在它上面。 可能有更好的方法,我愿意接受建议。

    【讨论】:

      【解决方案6】:

      这也很好用,而且很容易理解:

      var myButton = $('input:submit');
      var waitMessage = 'wait please...';
      myButton.click(function() {
          if (bottone.val() == waitMessage) {
              return false;
          };
          myButton.val(waitMessage);
          console.log('iClicked'); // this line is for testing only, it can be removed.
      });
      

      【讨论】:

        【解决方案7】:

        这是我的一个按钮,它调用 MVC 操作然后自行禁用:

        <button  class="btn blue pull-right" onclick="location.href='@Url.Action("Index", "GetData", new { page = Model.PageNumber + 1, sortOrder = Model.CurrentSort, fromDate = Model.FromDateParam, toDate = Model.ToDateParam, terminatingpoint = Model.TerminationPointParam, SurecallNo = Model.SurecallNoParm, CallerID = Model.CallerIDParm, outcome = Model.OutcomeParm, pagesize = Model.PageSize })';this.disabled = 'disabled'" >Next ></button>
        

        【讨论】:

          【解决方案8】:
          var but = 1;
          function f() {
              if(but == 1) {
                  alert("Hello World!");
                  but = 0;
              }
          }
          

          希望对您有所帮助。

          【讨论】:

            【解决方案9】:

            这将起作用:

            OnClientClick="if (this.getAttribute('clicked') == '1') {
                return false; 
            } else { 
                this.setAttribute('clicked', '1'); 
            }"
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-09-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-01-20
              相关资源
              最近更新 更多