Javascript et une seule case à cocher – indéfinie

for (i = 0; i < document.checks.user.length; i++) //for all check boxes { if (document.checks.user[i].checked == true ) { document.checks.submit(); return 0; } } <body> <form action="" method=POST name="checks" ID="Form2"> I have a bike: <input type="checkbox" name="user" value="Bike" ID="Checkbox1"> <br> <br> </form> <input type="button" value="Delete" class="btn" onclick="sub_delete()" onmouseover="hov(this, 'btn btnhov')" onmouseout="hov(this, 'btn')" id="Button1" name="Button1" /> </body> 

Comme vous le savez probablement déjà, il n'y a qu'une seule case à cocher gauche document.checks.user.length = indéfini. Quelle est la manière la plus efficace de s'assurer que lorsqu'il n'y a qu'une seule case à cocher, elle sera supprimée. Je pensais simplement penser à l'ajouter comme une déclaration si séparée avant la déclaration if ici ….. toute suggestion.

Merci.

Utilisez une variable de contrôle de la boucle et définissez-la sur 1 si la longueur est indéfinie …

 var len = document.checks.user.length; if(len == undefined) len = 1; for (i = 0; i < len; i++) //for all check boxes 

Meilleures salutations…

 if (document.getElementById('Checkbox1').checked) { /* do something */ } 

Si vous souhaitez boucler un certain nombre de cases à cocher, vous pouvez faire une boucle dans les champs de saisie de votre formulaire, comme:

 var formNodes = document.checks.getElementsByTagName('input'); for (var i=0;i<formNodes.length;i++) { /* do something with the name/value/id or checked-state of formNodes[i] */ } 
 if(document.checks.user[0]) { //it's an array } else { //it's a single element } 

Votre question est quelque peu déroutante, car votre javascript devrait évidemment être dans une fonction appelée 'sub_delete' pour être utile … quelqu'un avec le puissant pouvoir d'éditer des questions pourrait améliorer la question en la rendant plus claire …

Donc, le premier problème que vous devez résoudre est le fait que, pour une case à cocher unique, avec un nom donné «utilisateur», ce n'est pas un tableau et n'a donc pas de longueur définie, mais aussi si vous tentez de l'accéder en tant que tableau. Les choses se confondent … une réécriture complète de votre fonction javascript pourrait ressembler à ceci:

  function sub_delete{ if (typeof document.checks.user.length === 'undefined') { /*then there is just one checkbox with the name 'user' no array*/ if (document.checks.user.checked == true ) { document.checks.submit(); return 0; } }else{ /*then there is several checkboxs with the name 'user' making an array*/ for(var i = 0, max = document.checks.user.length; i < max; i++){ if (document.checks.user[i].checked == true ) { document.checks.submit(); return 0; } } } }//sub_delete end 

HTH, -FT

Moi aussi je suis confronté au même problème avec un total de 5 cases à cocher dont 4 sont désactivées et 1 est activé. Maintenant, la case à cocherId.length est indéfinie, donc la seule option que je pourrais penser est si (checkboxId.length == indefined) {checkboxId.checked = true & submit the form}.

C'est très simple, il suffit de créer une étiquette de saisie cachée avec le nom identique à l'étiquette d'entrée de la case à cocher existante.

Par exemple:

 <input type="checkbox" name="user" value="Bike" ID="Checkbox1"> <input type="hidden" name="user" value=""/> 

Je voudrais probablement itérer à travers document.checks.elements, à la recherche de .type == 'checkbox'.

JQuery est votre ami:

 $("input[type='checkbox']").attr('checked', false); 

(… si jQuery est à votre disposition?)