复选框启用/禁用在IE中不起作用

时间:2016-03-29 05:51:08

标签: javascript asp.net

我试图启用/禁用复选框' cb1Sub'当另一个复选框' cb1'已选中/未选中。

<table>
 <tr>
  <td>
   <asp:CheckBox ID="cb1" runat="server" onchange="checkedCB1(this);" />
  </td>
  <td>
   <asp:CheckBox ID="cb1Sub" runat="server" Enabled="false" />
  </td>
 </tr>
</table>




function checkedCB1(elm) {
        var elmId = $(elm).find("input").attr('id');
        var elmChk = $(elm).find("input").attr('checked');
        var elmSubId = elmId + "Sub";

        if (elmChk == "checked") {
            document.getElementById(elmSubId).disabled = false;
        } else {
            document.getElementById(elmSubId).disabled = true;
        }
    }

这适用于Firefox,但不适用于IE。

我认为当我启用该复选框时,其范围仍然被禁用。

从萤火虫中,我看到了这一点:

<span disabled="disabled">
<input type="checkbox" name="cb1Sub" id="cb1Sub">
</span>

2 个答案:

答案 0 :(得分:0)

function checkedCB1(elm) {
        var elmId = $(elm).find("input").attr('id');
        //use property instead of attr
        **var elmChk = $(elm).find("input").prop('checked');**
        var elmSubId = elmId + "Sub";

        if (elmChk == "checked") {
            document.getElementById(elmSubId).disabled = false;
        } else {
            document.getElementById(elmSubId).disabled = true;
        }
    }

答案 1 :(得分:0)

不是一个真正的答案,而是对一些低效代码的回应。

var elmId = $(elm).find("input").attr('id');

效率更高:

var elmId = elm.id;

checked 属性是boolean,它是true或false所以

 if (elmChk == "checked") {

应该是:

 if (elmChk) {

无论如何,假设您在选中 cb1 时要启用 cb1Sub ,那么:

function checkedCB1(elm) {
    document.getElementById(elm.id + "Sub").disabled = !elm.checked;
}