我通过复选框(chk1)'开/关'激活/取消激活面板。该面板包含一个复选框(chk2)和一个单选按钮(rbtn)。 选中单选按钮(rbtn)时,必须禁用该复选框。 通过取消选中“开/关”复选框禁用面板时,单选按钮和复选框(chk2)将被禁用。 问题是,当我打开启用了面板的页面时,会执行来自javascript的代码,但是当我打开禁用面板的页面时,在我启用面板后,当我检查单选按钮时,javascript doe不起作用,以便chk2变得残疾。
$(document).ready(function (){
$('input[id^=rbtn]').click(function () {
SetControlEnableState($('#chk2'), $('#rbtn'));
});
function SetControlEnableState(controlToSet, control) {
if (control.is(':checked')) {
$(controlToSet).attr('disabled', 'disabled');
alert('if');
}
else {
$(controlToSet).removeAttr('disabled');
alert('else');
}
}
});
当面板更新时,javascript代码不再可用。
答案 0 :(得分:3)
请勿在{{1}}一个复选框上使用click
事件:
change
这样你就可以得到新的状态。在复选框更改之前,生成了 $('input[id^=rbtn]').change(function () {
事件。
答案 1 :(得分:1)
而不是:
$(controlToSet).attr('disabled', 'disabled');
$(controlToSet).removeAttr('disabled');
这样做:
$(controlToSet).prop('disabled', true);
$(controlToSet).prop('disabled', false);
答案 2 :(得分:0)
$(document).ready(function (){
$('input[id^=rbtn]').change(function () {
SetControlEnableState();
});
function SetControlEnableState() {
if ($('#rbtn').is(':checked')) {
$('#chk2').attr('disabled', 'disabled');
alert('if');
}
else {
$('#chk2').removeAttr('disabled');
alert('else');
}
}
答案 3 :(得分:0)
简化整个事情:
$(document).ready(function () {
$('input[id^=rbtn]').change(function () {
SetControlEnableState($('#chk2'), $('#rbtn'));
});
function SetControlEnableState(controlToSet, control) {
controlToSet.prop('disabled', control.is(':checked'));
}
});
答案 4 :(得分:0)
试试这个
$(document).ready(function (){
$('input[id^=rbtn]').click(function () {
SetControlEnableState($('#chk2'), $(this));
});
function SetControlEnableState(controlToSet, control) {
if (control.is(':checked')) {
$(controlToSet).attr('disabled', 'disabled');
} else {
$(controlToSet).removeAttr('disabled');
}
}
});