2

我有一个带有两个禁用复选框的 HTML 表单和一个带有onclick需要显示弹出窗口并启用复选框的事件的图像:

<input id="chk1" type="checkbox" disabled="disabled" />
<input id="chk2" type="checkbox" disabled="disabled" />
<img src="..." onclick="window.open('...'); document.getElementById('chk1').disabled=false;document.getElementById('chk2').disabled=false" />

除了它不起作用。弹出窗口打开,但复选框永远不会启用。

而不是disabled=false我试过removeAttribute("disabled")没有运气。我还将 thewindow.open作为最后一条语句放置在onclick没有变化的情况下。

jQuery 不在这个项目中(还)所以我不能使用它。我究竟做错了什么?

编辑:

当我发布这个时,我没有透露这些input标签是由 ASP.NET 呈现的。通过测试,我们发现使用<asp:CheckBox /><input type="checkbox" runat="server" />影响disabled属性在 IE 和 FF 中的行为方式之间存在差异。

我一直认为最终的输出是相同的,但显然不是,尽管我无法发现差异。上面呈现的代码在使用 CheckBox 对象时适用于 FF 但不适用于 IE,但在使用 HtmlInputCheckBox 对象时适用于两者。

(我还应该指出,这些getElementById调用实际上是对各个元素使用 ASP.NET ClientID 属性。)

那么,我现在的问题是,为什么会这样?为什么在使用 HtmlInputCheckBox 对象而不是 CheckBox 对象时,启用/禁用功能在 IE 和 FF 中都有效?

4

6 回答 6

2

我刚刚找到了解决方案。这个对我有用 !

var checkBox = document.getElementById('" + chkBox.ClientID + "');
checkBox.removeAttribute('disabled');
checkBox.parentNode.removeAttribute('disabled');
于 2013-08-19T20:54:02.113 回答
2

试试这个,

inputElement.removeAttribute( 'disabled' );
inputElement.closest('span').removeAttribute( 'disabled' );
于 2012-10-04T05:42:07.690 回答
0

首先检查你的网络,第二个是一个链接,一个很好的功能供你使用

复选框禁用/启用 JS 功能

于 2011-07-29T17:10:04.147 回答
0

要启用复选框,我通常应用以下两项:

inputElement.disabled = false;
inputElement.removeAttribute( 'disabled' );

一些浏览器喜欢 DOM 节点属性,而其他浏览器则希望调整属性。

如果这是你说你正在做的事情没有工作,我深表歉意——我不太清楚你在说什么。

于 2011-07-29T17:12:56.807 回答
0

尝试这样做:

document.getElementById('chk1').getAttribute("disabled") = false;
于 2011-07-29T18:08:28.800 回答
-2

事实上,你做相反的事情来启用你的复选框。试试这些...

document.formname.chkname.disabled='';
于 2011-07-29T17:12:20.917 回答