2010-02-10 6 views
2

J'ai tiré avec succès la valeur vérifiée à partir d'un groupe de boutons radio avec jQuery 1.4 en utilisant le code suivant:Comment puis-je modifier une variable basée sur une case à cocher lors de la validation

var myFirstVar = $("input[name='myFirstVar']:checked").val(); 

Comment puis-je modifier ce code savoir si une case à cocher a été cochée, et changer la valeur de la var selon qu'elle est cochée ou non.

J'ai essayé beaucoup de choses, mais voici un exemple de ce que je pensais travailler:

if ($("input[name='mySecondVar']:checked")) { 
    var mySecondVar = "Yes"; 
    } 
    else { 
    var mySecondVar = "No"; 
    } 

Toute idée sur un simple changement de la valeur si la case est cochée ou non serait génial.

Répondre

2

Essayez ceci:

var mySecondVar = $("input[name='mySecondVar']:checked").length ? "Yes" : "No"; 
+0

bonne utilisation de l'attribut jQuery .length. Gardez à l'esprit qu'il s'agit de la propriété jQuery .length, et non d'une propriété de tableau javascript native, considérant $ ("input [name = 'mySecondVar']: checked") renvoie un objet jQuery, pas un tableau. –

+0

Nick, j'ai utilisé votre code et cela a fonctionné en changeant simplement mes noms de variables. Merci beaucoup. Cependant, je ne comprends pas ce qui se passe avec cette longueur. "Oui Non"; attribut. La démonstration sur http://api.jquery.com/length/ me dépasse un peu. Ai-je raison de supposer que pour l'attribut .length, tout ce qui est avant le ':' est la valeur de la longueur "plus de 0" et tout ce qui vient après sera la valeur de la longueur des caractères "0" ? –

1

Le « : coché la case » partie du sélecteur est juste dire jQuery pour sélectionner uniquement les éléments qui sont cochés. Les sélecteurs jQuery renvoient toujours un résultat (l'objet jQuery), il ne suffit donc pas de placer le sélecteur dans la clause if. Vous voulez voir si le résultat contient réellement des éléments, alors $("input[name='mySecondVar']:checked").length fonctionnera pour votre clause conditionnelle (puisque Javascript interprète 0 comme "faux").

Une autre approche serait

if ($("input[name='mySecondVar']")[0].checked) { 
    var mySecondVar = "Yes"; 
    } 
    else { 
    var mySecondVar = "No"; 
    } 
+0

Bonjour JacobM, Merci de contribuer. Ne pas être un développeur, à travers et à travers ... celui-ci a plus de sens pour moi que le précédent parce que ce qui se passe est exposé de façon beaucoup plus verbeuse. Cependant, je suis allé avec la contribution de Nick et cela a semblé fonctionner, donc je vais m'en tenir à ça. Très apprécié. –

+0

Absolument. L'approche de Nick s'appelle "l'opérateur ternaire" et est une syntaxe plus courte pour des instructions simples si-alors; essentiellement CONDITION? VRAIE RÉPONSE: FAUX RÉPONSE. Je l'utilise souvent dans la vraie vie, mais pour une réponse SO, je pense que l'explicite si-alors est plus clair. La fonctionnalité est identique. –

0

Vous pouvez définir la condition de base de votre variable de script java.

if($("input[name='testVar']:checked").length) 
    set variable 
else 
    set variable 
Questions connexes