我试图启用/禁用复选框' 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>
答案 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;
}