规则重叠的问题

时间:2010-07-15 16:36:53

标签: jquery

我有两个重叠的复选框规则。 这个先运行

$("#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,不需要警告它已被添加。

谢谢,

3 个答案:

答案 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如上所述。谢谢你们的帮助!