我有两个重叠的复选框规则。 这个先运行
$("#BMFNP").change(function() {
if($(this).is(":checked") && $("#INTEF").is(":not(:checked)")) {
$("#INTEF").attr("checked", true);
alert("foo");
}
});
这个运行第二个:
$("#BMFNP").change(function() {
if($(this).is(":checked") && $("#INTEF").is(":checked")) {
alert("bar");
}
});
所以基本上第一个运行如果检查BMFNP,INTEF不检查INTEF并运行警报。那时,两者都被检查,因此它运行第二个功能。我怎样才能解决这个问题?我需要为每种情况工作和显示不同的消息,如果选中BMFNP,INTEF不检查INTEF并且警告它已被添加,BMFNP只能执行xxxxx。如果两者都被选中,只需提醒BMFNP只能执行xxxx,不需要警告它已被添加。
谢谢,
答案 0 :(得分:2)
$("#BMFNP").change(function() {
if($(this).is(":checked") {
if( $("#INTEF").is(":checked")) {
alert("bar");
} else {
$("#INTEF").attr("checked", true);
alert("foo");
}
}
});
是那样的?
答案 1 :(得分:2)
您可以使用单个事件处理程序,并显着缩短解决方案:
$("#BMFNP").change(function() {
if(this.checked) {
$("#INTEF").is(":checked") ? alert('bar') : alert('foo');
}
});
答案 2 :(得分:0)
评论难以格式化代码。这完全符合要求。
$("#BMFNP").change(function() {
if($(this).is(":checked")) {
if($("#INTEF").is(":checked")) {
alert("only outside brazil");
} else { $("#INTEF").attr("checked", true);
alert("INTEF has been added and only avail. outside brazil");
}
}
});
@ karim79 - 你的更短,但只运行警报,如果不是,我需要将检查添加到INTEF,BMFNP如上所述。谢谢你们的帮助!