2013-06-20 17 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 /客户端代码,然后服务器端代码......在那里,因为它只是之前做服务器端代码......

我需要一些扑热息痛现在。