2010-07-15 7 views
2

J'ai deux règles de case à cocher qui se chevauchent. Celui-ci se dirige d'abordProblème de chevauchement des règles

$("#BMFNP").change(function() { 
    if($(this).is(":checked") && $("#INTEF").is(":not(:checked)")) { 
     $("#INTEF").attr("checked", true); 
     alert("foo"); 
    } 
}); 

Celui-ci fonctionne seconde:

$("#BMFNP").change(function() { 
    if($(this).is(":checked") && $("#INTEF").is(":checked")) { 
    alert("bar"); 
    } 
}); 

Donc, fondamentalement, le premier court si BMFNP est cochée, et Intef est pas vérifie Intef et fonctionne l'alerte. À ce moment, les deux sont vérifiés afin qu'il exécute la deuxième fonction. Comment puis-je réparer cela? J'ai besoin à la fois de travailler et d'afficher différents messages pour chaque situation, si BMFNP est coché, INTEF ne vérifie pas INTEF et alerte qu'il a été ajouté et BMFNP ne peut que faire xxxxx. Si les deux sont cochés, alertez simplement que BMFNP ne peut que faire xxxx, pas besoin de l'alerter a été ajouté.

Merci,

Répondre

2
$("#BMFNP").change(function() { 
    if($(this).is(":checked") { 
     if($("#INTEF").is(":checked")) {    
      alert("bar"); 
     } else { 
      $("#INTEF").attr("checked", true); 
      alert("foo"); 
     } 
    } 
}); 

comme ça?

+0

Fermez, mais la barre d'alerte était en cours d'exécution si les deux étaient cochées et que vous supprimiez BMFNP. Vous m'avez réévalué et j'ai trouvé cela et cela a fonctionné comme je le voulais. $ ("# BMFNP"). Change (function() { if ($ (this) .is (": vérifié")) { if ($ ("# INTEF"). Est (": coché")) { alerte ("bar"); } else { $ ("# Intef") attr ("checked", true);. alerte ("foo"); } } }); merci l'homme! –

+0

désolé, mon mauvais, l'a corrigé .. :) – Reigel

2

Vous pouvez utiliser un seul gestionnaire d'événement et de réduire de manière significative la solution.

$("#BMFNP").change(function() { 
    if(this.checked) { 
     $("#INTEF").is(":checked") ? alert('bar') : alert('foo'); 
    } 
}); 
+0

C'est plus facile, et il fait exactement ce que vous avez demandé. – jcolebrand

+0

'alert' est juste un simple échantillon .... Je doute que vous pouvez mettre beaucoup de codes là-bas? ... comme le font xxxxx ??? et vous avez raté 1 '(' – Reigel

+0

@Reigel, j'aurais dû être plus explicite, ça devait être du texte comme dans "Cela ne peut que faire xxxx (quelque chose)" c'est un produit qui ne peut que faire quelque chose, je n'ai pas signifie une commande dans le JS. mon mauvais! –

0

Les commentaires sont difficiles à code de format dans ce fait exactement ce qui a été demandé.

$("#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 - le vôtre est plus courte, mais ne fonctionne que les alertes, je dois ajouter vérifié Intef si elle est pas et BMFNP est comme ci-dessus. Merci pour toute votre aide les gars!

+0

hahaha ma mauvaise ... j'ai oublié de transférer le '$ (" # INTEF "). attr (" vérifié ", vrai);' part ... il était censé aller avec 'alert ('foo')' ...: D ... désolé pour ça ... eh bien, je suis content que vous l'ayez compris ... :) – Reigel