0

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

正如我从这个问题/答案中了解到的那样,设置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"最初使用的是我应该rejectButton.removeAttribute('disabled')在启用/禁用 JavaScript 中使用吗?

4

1 回答 1

0

经过大量控制台调试和谷歌搜索不同的方式后,我找到了以下解决方案/答案

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。

于 2013-06-20T07:59:39.767 回答