2010-09-29 23 views
2

這段代碼不工作,它禁用了代碼,有時它必須啓用它,我怎麼能這樣做?有什麼可能是錯的?我這樣做是爲了避免多次點擊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> 
+0

你可以使用一個警報,以確定是否enableButton功能工作? – Adam 2010-09-29 16:41:17

回答

4

你不能傳遞了一個字符串setTimeout()這裏,因爲功能不是全球性的,而不是通過直接引用的函數,所以更改此:

setTimeout('enableButton()', 50); 

這樣:

setTimeout(enableButton, 50); 

一般總是嘗試這樣做,它會避免很多問題......像你遇到的一個。

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); 
    }); 

}); 
+0

這不是解決問題的正確方法......傳遞一個字符串意味着一個'eval()'和其他範圍問題,爲什麼不修正*問題*而不是僅僅解決*症狀*? :) – 2010-09-29 16:46:55

+0

傳遞一個字符串意味着一個eval()?在我的代碼?,在哪裏? – 2010-09-29 16:50:21