Problème script avec name checkbox avec crochets []

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème script avec name checkbox avec crochets []

par AB » 21 févr. 2009, 14:12

Donc en termes concrets on peux faire comme ça

Code : Tout sélectionner

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Document sans titre</title> <script type="text/javascript"> function checkall(nomcheck,init) { this.i = (typeof this.i == 'number')? this.i : parseInt(init); var id = nomcheck+i; if (this.box = document.getElementById(id)) { this.box.checked="checked"; this.i++; checkall(nomcheck,init); } } </script> </head> <body> <div> <form action ="#" method = "post"> <p> <input type="checkbox" id = "check1" name = "groupe[]" /> <input type="checkbox" id = "check2" name = "groupe[]" /> <input type="checkbox" id = "check3" name = "groupe[]" /> <input type="checkbox" id = "check4" name = "groupe[]" /> <input type = "button" onclick = "checkall('check',1)" value = "Coche tout" /> </p> </form> </div> </body> </html>
Le premier paramètre de checkall('check',1) indique le nom des id.
Le deuxième paramètre (ici = 1) indique le numéro initial de départ. Si tu commençais à partir de check0, il faudrait appeler la fonction checkall('check',0)

par AB » 21 févr. 2009, 12:17

De toutes façons tu étais parti sur de mauvaises bases : un id ne doit pas commencer par un chiffre.

donc tu peux faire par exemple id = "check1" etc.

Ensuite en js tu peux faire une fonction récursive qui incrémente une variable (var inc= 1) et qui teste si document.getElementById('check.inc') existe et si oui tu fais checked = "checked". Tu arrêtes la récursivité si document.getElementById('check.inc') n'existe pas (dans ce cas tu auras listé tous tes checkbox)

EDIT en faisant de la sorte tu pourras mettre n'importe quoi comme name

Problème script avec name checkbox avec crochets []

par beninsky » 21 févr. 2009, 08:57

Bonjour, voici un script qui marche et qui coche toutes mes checkbox quand je sélectionne "Administrator" dans mon menu déroulant et les décoche si je sélectionne quelque chose d'autre.

Le problème est que j'ai besoin que ma partie name="genre" de mes checkbox soit name="genre[]" car je les traitent ensuite pour les insérer dans une base de données.

Quand name="genre[]" mon script javascript ne marche plus car il n'a pas l'air d'aimer les crochets.

Quelle solution il y a t-il ?

Code : Tout sélectionner

<html> <head> <script type="text/javascript"> function allchecked(form) { var max = form.groupe.length+1; for (i=1; i<max; i++) { document.getElementById(i).checked = "checked"; } } function nonechecked(form) { var max = form.groupe.length+1; for (i=1; i<max; i++) { document.getElementById(i).checked = ""; } } </script> </head> <body> <form> <select class = "bigroll" id="mabox" type="text" name="status"> <option onclick="nonechecked(this.form)"></option> <option value="1" onclick="allchecked(this.form)">Administrator</option> <option value="2" onclick="nonechecked(this.form)">Leader</option> <option value="3" onclick="nonechecked(this.form)">Member</option> </select> <input type="checkbox" id="1" name="groupe" value="9"/>group9<br/> <input type="checkbox" id="2" name="groupe" value="12"/>group12<br/> <input type="checkbox" id="3" name="groupe" value="13"/>group13<br/> <input type="checkbox" id="4" name="groupe" value="3"/>group3<br/> <input type="checkbox" id="5" name="groupe" value="4"/>group4<br/> </form> </body> </html>