我在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')
吗?
答案 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。