[HTML/JS/PHP] accèder à une variable d'un formulaire

accèder à une variable d'un formulaire [HTML/JS/PHP] - HTML/CSS - Programmation

Marsh Posté le 03-02-2005 à 21:26:15    

J'ai un formulaire avec des <input>, dont un qui port le nom "xxx[]", car il s'agit d'un checkbox et plusieurs cases sont cochables.
Je les récupère donc sous la forme d'un tableau en PHP une fois le formulaire envoyé, mais j'aimerais vérifier avec un script Javascript qu'au moins une des cases est cochée, seulement, je n'arrive pas à accèder à la variable par xxxx[].value ou xxx.value en javascript, ni par getElementById().
 
Est ce que quelqu un aurait une idée ?

Reply

Marsh Posté le 03-02-2005 à 21:26:15   

Reply

Marsh Posté le 03-02-2005 à 21:36:23    

axelazerty a écrit :

J'ai un formulaire avec des <input>, dont un qui port le nom "xxx[]", car il s'agit d'un checkbox et plusieurs cases sont cochables.
Je les récupère donc sous la forme d'un tableau en PHP une fois le formulaire envoyé, mais j'aimerais vérifier avec un script Javascript qu'au moins une des cases est cochée, seulement, je n'arrive pas à accèder à la variable par xxxx[].value ou xxx.value en javascript, ni par getElementById().
 
Est ce que quelqu un aurait une idée ?


 
Montre ce que tu as fait en JS.  ;)  

Reply

Marsh Posté le 03-02-2005 à 21:41:32    

bah j'ai rien en fait
j ai essayé :  
 
"alert(qX3YtX1[].checked)"
"alert(qX3YtX1.checked)"
 
sans succès.Et pourtant, aucune erreur dans la console Javascript de mozilla.
 
bizarrement, quand j affiche document.forms[0].elements, je vois bien les 5 cases à cocher qui portent le nom "qX3YtX1[]" mais quand j essaie d' y accéder, impossible.

Reply

Marsh Posté le 03-02-2005 à 21:52:02    

Va voir ici :
http://www.lemage.net/tutoriaux%20 [...] laires.htm
 

Code :
  1. <FORM NAME="form">
  2. <INPUT TYPE="CHECKBOX" NAME="check[1]" VALUE="1">Choix numéro 1<BR>
  3. <INPUT TYPE="CHECKBOX" NAME="check[2]" VALUE="2">Choix numéro 2<BR>
  4. <INPUT TYPE="CHECKBOX" NAME="check[3]" VALUE="3">Choix numéro 3<BR>
  5. <INPUT TYPE="CHECKBOX" NAME="check[4]" VALUE="4">Choix numéro 4<BR>
  6. <INPUT TYPE="button"NAME="but" VALUE="Corriger" onClick="reponse(this)">
  7. </FORM>


 
Le code Javascript correspondant :

Code :
  1. <script language="javascript">
  2. function reponse(form)
  3. {
  4.   var i = 1;
  5.   while(i=<4 && form.check[i]!=true)
  6.   {
  7.     i++;
  8.   }
  9.   if(i==4 && form.check[4]!=true)
  10.   {
  11.     alert('coche une case');
  12.     return false;
  13.   }
  14.   return true;
  15. }
  16. </SCRIPT>


Un truc dans le genre

Reply

Marsh Posté le 03-02-2005 à 21:53:19    

Au fait c'est bien le javascript mais si le mec n'as pas Javascript c'est foutu. Donc met tout de meme des controles en PHP derriere...
 
EDIT :  
ici pour le controle de checkbox en php :
http://www.asp-php.net/tutorial/as [...] php?page=5
 


Message édité par Spir le 03-02-2005 à 21:56:19
Reply

Marsh Posté le 03-02-2005 à 22:09:03    

le contrôle php etait deja fait, a vrai dire je voulais me passer de javascript mais ce n est pas moi qui décide...
Merci pour les liens.

Reply

Marsh Posté le 03-02-2005 à 22:19:51    

rien ne fonctionne.
voici le onsubmit que j ai essayé
 

Code :
  1. onsubmit="var i = 0;var form_ok = false; var total = qX14YtX1[].length; var total2 = qX14YtX1.length; var total3 = getElementById('qX14YtX1').length; var total4 = getElementById('qX14YtX1[]').length; alert(total + ' ' + total2 + ' ' + total3 + ' ' + total4); return false;"


 
j Ai essayé successivement (et seul, sans les autres) les 4 instructions pour récupérer la longueur, mais aucune ne fonctionne!!

Reply

Marsh Posté le 04-02-2005 à 02:47:47    

Tu dis avoir essaye avec getElementById...
J'ai l'impression que tu as du rater quelque chose d'important.
Si tu donne un id a tes checkbox tu devrais y acceder sans probleme. Pour rappel c'est le parametre "name" qui est utilise pour le "nom" des elements a envoyer lors du submit de ton form. En revanche, l'id n'est pas utilise dans ce processus. Tu peux donc "renommer" tes checkboxes sans probleme, puis y acceder sans probleme via getElementById, pour information, un id est unique.
 
Voila ce que je te conseille :

Code :
  1. <script type="text/javascript">
  2. function response() {
  3.   var i = 0;
  4.   var nbcheck = 4;
  5.   for (x=1; x<nbcheck+1; x++) {
  6.     i += document.getELementById('check'+x).checked;
  7.   }
  8.   while
  9.   if (i == 0) {  // on aurait pu faire ca aussi : if ( !i )
  10.     alert("Vous devez cochez au moins une case" );
  11.   }
  12. }
  13. </script>
  14. <form name="form"> 
  15. <input type="checkbox" name="check[1]" id="check1" value="1">Choix numéro 1<br /> 
  16. <input type="checkbox" name="check[2]" id="check2" value="2">Choix numéro 2<br /> 
  17. <input type="checkbox" name="check[3]" id="check3" value="3">Choix numéro 3<br /> 
  18. <input type="checkbox" name="check[4]" id="check4" value="4">Choix numéro 4<br /> 
  19. <input type="button" name="but" value="Corriger" onclick="reponse(this)"> 
  20. </FORM>



Message édité par cerel le 04-02-2005 à 02:57:19
Reply

Marsh Posté le 04-02-2005 à 10:26:05    

Cerel a écrit :


Code :
  1. for (x=1; x<nbcheck+1; x++) {
  2.     i += document.getELementById('check'+x).checked;
  3.   }
  4.   while



C'est une erreur de copie/colle ce for while???

Reply

Marsh Posté le 04-02-2005 à 13:04:24    

Oops, en effet il y a un while qui s'est glisse ...
En meme temps, a 2h45 du mat j'ai des excuses :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed