J'ai cinq cases à cocher. Utilisation de jQuery, comment puis-je vérifier si au moins l'un d'entre eux est vérifié?
10 Réponses :
des docs JQuery, http://api.jquerery.com/is/ :
Vérifiez l'ensemble d'éléments correspondant actuellement sur un objet sélecteur, élément ou jQuery et renvoyez true si au moins un de ces éléments correspond aux arguments donnés. em> p>
blockQuote>
est () code> peut le faire et est sans doute la seule utilisation acceptable de est (": cochée") code>:
$("input[name='service[]']").is(function () {
return this.checked;
});
Cela devrait faire le tour:
Edit: em> La solution d'origine dans cette réponse est inefficace et ne doit pas être utilisée. Veuillez consulter la solution révisée basée sur des commentaires et des exemples d'autres réponses à cette question. La solution originale (mauvaise) suit: p> Utilisation de. Est redondant dans cet exemple, en tant que .IS () peut être utilisé directement sur l'ensemble d'objets plutôt que de itération manuelle à travers chacun. Une solution plus efficace suit: p> Notez que l'un des commentaires indique une aversion forte pour $ (this) .is (': vérifié') code >. Pour clarifier, il n'y a rien de mal avec est (': coché') code> dans les cas où vous testez un ensemble d'objets. Cela dit, appelant est (': coché') code> sur un seul élément est beaucoup moins efficace que l'appelant .CHECKED code> sur le même article. Cela implique également un appel inutile à la fonction $. P> p>
Si je vois $ (this) .is (': coché') code>, je prends le développeur de retour et avez quelques mots avec lui.
Pourquoi cette réponse est-elle tellement évitée massivement? Si quelque chose ne va pas avec cela, veuillez fournir une raison pour laquelle c'est le cas dans les commentaires.
@Aron: (1) Utilisation inutile de .uite code>. (2) Utilisation inutile de $ (this) .is (': coché') code>. ceci.Checked code> fonctionnerait aussi bien. (3) $ ("entrée [nom = service []]: coché") code> vous obtiendrait la liste des cases cochées sans même avoir à passer par cette merde. Obtenez la longueur et vous avez terminé. Faites votre choix.
De toute évidence, le code peut être écrit beaucoup plus propre. Cela ne fait cependant pas que cette réponse est incorrecte. Ce comportement de descente est ridicule et est démotivational. La baisse d'une réponse «non si bonne» sans explication n'a pas de point du tout.
Le mauvais code devrait - et sera appelé comme tel. Ceci étant un site pour les gens d'apprendre des choses, je ne voudrais pas que certains pauvres Newbie examinent cela et pensent que c'est la voie à faire. Une partie amusante est, je n'ai même pas encore évité (encore) - je m'expliquais simplement pourquoi je voudrais. Le code trahit un malentendu de fondamentaux.
@AronrotteveEL NOUS DÉTACHONS DOWN VOTE RÉPONSES QUI PRÉVOIR PRÉVOIR LE BAD CODE. C'est la même chose que le vote en bas une réponse corme correcte mais utilise goto code>
@Aron: Je pense que c'est quelque peu de ma faute, alors que j'ai soulevé cette question de sujet de discussion dans chat JavaScript a >. Cependant, il est assez courant de voter une réponse, surtout s'il est accepté, quand c'est une mauvaise solution. Cela permet aux autres visiteurs intéressés à résoudre le même problème, voir que la communauté n'est pas d'accord avec l'approche acceptée et les encourage à faire défiler des réponses meilleures (dont plusieurs ici). Les votes en panne ne sont pas personnels ni malveillants et ne doivent pas être considérés comme tels. Ils sont en fait un outil très utile.
@Andy e: Je suis tout à fait d'accord. Je supporte pleinement les votes en bas dans les cas où la réponse acceptée n'est pas la meilleure solution. J'ai mis à jour la réponse aux résumés aux problèmes avec la solution d'origine et offrez-en un meilleur.
C'est en fait une bonne réponse, car cela traverse une approche sous-optimale que d'autres serait susceptible d'essayer, explique pourquoi c'est mauvais, puis explique une solution plus appropriée. Bon sur vous pour le quitter.
Pour mon cas, cela ne fonctionne que la première fois après Actualiser la page. Après cela, ce n'est pas le cas. Quelqu'un sait pourquoi de cette façon?
@Anu, j'aurais besoin de voir votre code, car il y a trop de choses qui pourraient causer cela. Pouvez-vous poster une nouvelle question et lier ici ici?
@Brandongano I Code de la manière suivante et capable d'obtenir le travail effectué si (JQuery ('# Entrée principale [Type = Cochez la case]: vérifié'). Longueur) {Vérifié = vrai; } code> Après cela, vérifiez la variable si (! coché) {faire quelque chose} code>
var atLeastOneIsChecked = $('input[name="service[]"]:checked').length > 0;
Cochez la case.Length code> vous dirait combien de cases à cocher ont ce nom. Il ne fait pas de discrimination entre les boîtes cochées et décochées.
Mise à jour de la réponse
var checkboxes = document.getElementsByName("service[]");
if ([].some.call(checkboxes, function () { return this.checked; })) {
// code
}
What you want is simple, get all the elements with the name, then run some code if some of those elements are checked.No need for jQuery.You may need an ES5 shim for legacy browsers though
Une autre réponse: ou p> Cela dépend de ce que vous voulez. p> p>
Vous pouvez totalement : case à cocher: coché code> it up
@ Island205: Qu'est-ce que tu veux dire par "mal compris sélecteur CSS"?
@ Boltchock, laissez-moi voir. [1] Un jour, il y a un nouveau venu demandé "pourquoi je ne peux pas obtenir de la largeur de Texarea $ (': texte, textarea')?" Dans la salle de discussion JS, je considère que cela est facile malentendu par le nouveau venu. [2] est ": case à cocher" un sélecteur CSS? Non, c'est une mauvaise norme juste dans jquery.in CSS, ": quelque chose" est des pseudo-classes. [3] "[Type = Cochez la case]" est plus efficace, $ peut utiliser l'API "QuerySelectorall" fourni par Browser.btw, Donnez-moi une uppote s'il vous plaît, que je peux bownvotez la réponse erronée mais sélectionnée!
Je ne comprends pas. L'ensemble Point B> du moteur de sélection de JQuery est de vous permettre d'utiliser des sélecteurs de CSS avancés dans les navigateurs plus anciens, et i> certains sélecteurs / extensions non standard pour simplifier votre code de sélection. Si vous l'évitez de la performance, utilisez également QSA directement sans parcourir le $ () code> appelez et n'enseigne personne à propos de JQuery.
Vous devriez essayer comme ça .... }); p> p>
Ce serait mieux si vous pouviez aussi expliquer pourquoi i>.
Vous devez vérifier si la case à cocher est cochée ou non.
Vous pouvez faire la voie suivante. Initialement définir une variable, disons p> coché code> comme false code>. Puis définissez-le sur true code> si la condition suivante est remplie. Utilisez une instruction si code> pour vérifier la variable. Prenez note: Ici Soumettre code> est l'identifiant code> du bouton, principal code> est l'identifiant du formulaire. $("#submit").click(function() {
var checked = false;
if (jQuery('#main input[type=checkbox]:checked').length) {
checked = true;
}
if (!checked) {
//Do something
}
});
Le support carré Il en va de même sur votre HTML, mais mieux d'avoir un [] code> n'est pas nécessaire: ID code> Pour identifier de manière unique chacune des cases à cocher: p>