JavaScript禁用属性与Enabled属性不同?

时间:2013-06-20 04:55:41

标签: javascript asp.net

我在asp按钮和JavaScript的disabled属性方面遇到了一些奇怪的问题,可能是由于我缺乏经验,但无论如何......

据我理解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')吗?

1 个答案:

答案 0 :(得分:0)

经过大量的控制台调试和谷歌搜索同样的事情后,我发现了以下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 /客户端代码,然后触发服务器端代码......因为它只是在执行服务器端代码之前......

我现在需要一些panadol。