11
votes

Vérifiez si au moins une case à cocher est cochée à l'aide de jQuery

J'ai cinq cases à cocher. Utilisation de jQuery, comment puis-je vérifier si au moins l'un d'entre eux est vérifié? XXX


0 commentaires

10 Réponses :


17
votes

est () code> peut le faire et est sans doute la seule utilisation acceptable de est (": cochée") code>:

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>

$("input[name='service[]']").is(function () {
    return this.checked;
});


0 commentaires

15
votes

Cela devrait faire le tour: xxx


0 commentaires

16
votes

Edit: 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: xxx

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: xxx

Notez que l'un des commentaires indique une aversion forte pour $ (this) .is (': vérifié') . Pour clarifier, il n'y a rien de mal avec est (': coché') dans les cas où vous testez un ensemble d'objets. Cela dit, appelant est (': coché') sur un seul élément est beaucoup moins efficace que l'appelant .CHECKED sur le même article. Cela implique également un appel inutile à la fonction $.


12 commentaires

Si je vois $ (this) .is (': coché') , 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 . (2) Utilisation inutile de $ (this) .is (': coché') . ceci.Checked fonctionnerait aussi bien. (3) $ ("entrée [nom = service []]: coché") 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


@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 . 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; } Après cela, vérifiez la variable si (! coché) {faire quelque chose}



0
votes
var atLeastOneIsChecked = $('input[name="service[]"]:checked').length > 0;

2 commentaires

Cochez la case.Length 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



1
votes
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

0 commentaires

3
votes

Une autre réponse: xxx

ou xxx

Cela dépend de ce que vous voulez.


4 commentaires

Vous pouvez totalement : case à cocher: coché 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 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 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 $ () appelez et n'enseigne personne à propos de JQuery.



1
votes

Vous devriez essayer comme ça .... xxx

});


1 commentaires

Ce serait mieux si vous pouviez aussi expliquer pourquoi .



1
votes

Vous devez vérifier si la case à cocher est cochée ou non. xxx


0 commentaires

0
votes

Vous pouvez faire la voie suivante. Initialement définir une variable, disons 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.

p>

$("#submit").click(function() {
  var checked = false;
  if (jQuery('#main input[type=checkbox]:checked').length) {
    checked = true;
  }
  if (!checked) {
    //Do something
  }
});


0 commentaires

0
votes

Le support carré [] n'est pas nécessaire: xxx

Il en va de même sur votre HTML, mais mieux d'avoir un ID Pour identifier de manière unique chacune des cases à cocher: xxx


0 commentaires