jquery在一段时间后启用按钮

时间:2010-09-29 16:38:52

标签: jquery

此代码无效,它会禁用代码,有时必须启用它,我该怎么做?什么可能是错的?我这样做是为了避免多次点击

<% Html.EnableClientValidation(); %>
    $(document).ready(function () {
        $('#form1').submit(function () {
            $('#btn').attr("disabled", "disabled");
            setTimeout('enableButton()', 50);
        });
        function enableButton() {
            $('#btn').removeAttr('disabled');
        }
    }); 

<% using (Html.BeginForm("Create","OrganizationGroups",FormMethod.Post,new {id="form1"}))

{%>
%>
<%= Html.ValidationSummary(false)%> 

<div>
    <%= Html.ActionLink("Back to List", "ManageOrganizationGroup")%>
</div>

2 个答案:

答案 0 :(得分:4)

你不能在这里将字符串传递给setTimeout(),因为函数不是全局函数,而是传递对函数的直接引用,所以改变这个:

setTimeout('enableButton()', 50);

到此:

setTimeout(enableButton, 50);

一般来说始终尝试这样做,它会避免很多问题......就像你所拥有的那样。

答案 1 :(得分:1)

这样:

<% Html.EnableClientValidation(); %> 

function enableButton() {
   $('#btn').removeAttr('disabled');
}

$(document).ready(function () { 

   $('#form1').submit(function () { 
       $('#btn').attr("disabled", "disabled"); 
       setTimeout(enableButton, 50);
   });

});

或者这个:

<% Html.EnableClientValidation(); %> 

$(document).ready(function () { 

   $('#form1').submit(function () { 

       var btn = $('#btn').attr("disabled", "disabled"); // ref to #btn

       setTimeout(function() 
         {
            $(btn).removeAttr('disabled');
         }
      , 50);
   });

});