2013-06-20 20 views
-1

我有一些奇怪的問題,有一個asp按鈕和JavaScript的disabled屬性,可能是由於我缺乏經驗,但無論如何...JavaScript禁用的屬性與Enabled屬性不一樣嗎?

當我從這個question/answer瞭解,設置disabled屬性使得元素禁用。 除非你設置它像這樣; element.disabled = false;

所以,這就是我在我的代碼中所做的;

<script type="text/javascript"> 
    function CheckOne(inChkBox) { 
     ... irrelevant code goes here ... 
     var rejectButton = document.getElementById('btnReject'); 
     if (inChkBox.checked) { 
      rejectButton.disabled = false; 
      rejectButton.className = 'Enabled'; 
     } else { 
      rejectButton.disabled = true; 
      rejectButton.className = 'Disabled'; 
     } 
    } 
</script> 
<input type='checkbox' name='chkRejectLineItem' onchange='CheckOne(this);' runat="server"/> 

這似乎觸發和(至少是CssClass屬性的變化......)的事實,我的按鈕仍然禁用除了正常工作;

<asp:Button ID="btnProjectTimeReject" runat="server" Text="Reject Selected" OnClientClick="LineItemRejectReason();" OnClick="btnProjectTimeReject_Click" Enabled="False" CssClass="Disabled"/> 

我知道這一點,因爲OnClientClick不會被調用(出於某種原因,服務器端代碼仍然被稱爲??)。如果我將按鈕設置爲Enabled="True",那麼一切都按預期工作。

是因爲我最初使用的是Enabled="True",而應該在啓用/禁用JavaScript中使用rejectButton.removeAttribute('disabled')

回答

0

經過很多控制檯調試和google搜索不同的方式,我發現了以下solution/answer

var rejectButton = document.getElementById('btnPLReject'); 
if (inChkBox.checked) { 
    rejectButton.disabled = false; 
    rejectButton.className = 'Enabled'; 
    $('#btnPLReject').bind("click", function() { LeaveRejectReason(); }); 
} else { 
    rejectButton.disabled = true; 
    rejectButton.className = 'Disabled'; 
} 

這將導致該按鈕觸發的JavaScript /客戶端代碼,然後服務器端代碼......在那裏,因爲它只是之前做服務器端代碼......

我需要一些撲熱息痛現在。