par
sadeq » 28 mai 2008, 18:28
Oui, je vois. Car les noms de balises formulés "nom[]" ne sont pas considérés par html/js comme un tableau parce qu'ils se termine par doubles crochets [].
Dans ce cas il faut réconcilié entre html/js et php :
- - PHP : considère comme tableau les balises ayant un même nom et se terminant par double crochets []
- JAVASCRIPT : considère comme tableau les balises ayant un même nom (qu'il portent [] ou pas).
Donc on peut donner aux checkbox le même nom se terminant par [] pour satisfaire PHP et préciser à JAVASCRIPT d'utiliser les objets portant ce nom crochets incluses pour accéder aux objets.
Exemple:
On remet le code PHP générateur des noms des checkbox comme ça:
for($i=0;$i<3;$i++){
echo '<input type="checkbox" name="choix[]" value="'.$i.'" onclick="verif_check(this)">Valeur '.($i+1).'<br />';
}
Ainsi, toutes les checkbox auront comme nom unique : "choix[]" ce qui oblige Javascript de considérer les objets ayant le nom "choix[]" comme un tableau.
Dans le code Javascript il faut changer la façon d'accéder aux checkbox par leur nom unique.
Comme ça:
Code : Tout sélectionner
tab_choix = document.formulaire.elements["choix[]"]; //accès au tableau des checkbox
Cela donnera par exemple pour la première function un truc comme ça:
Code : Tout sélectionner
<script>
function verif(){
choix = 0;
tab_choix = document.formulaire.elements["choix[]"]; //accès au tableau des checkbox
for(i=0;i<tab_choix.length;i++){
if(tab_choix[i].checked) {choix += 1;}
}
if(choix != 2) { alert("Vous devez sélectionner 2 options"); return false; }
else { alert("formulaire ok"); return true; }
}
</script>
Oui, je vois. Car les noms de balises formulés "nom[]" ne sont pas considérés par html/js comme un tableau parce qu'ils se termine par doubles crochets [].
Dans ce cas il faut réconcilié entre html/js et php :
[list]- PHP : considère comme tableau les balises ayant un même nom et se terminant par double crochets []
- JAVASCRIPT : considère comme tableau les balises ayant un même nom (qu'il portent [] ou pas).
[/list]
Donc on peut donner aux checkbox le même nom se terminant par [] pour satisfaire PHP et préciser à JAVASCRIPT d'utiliser les objets portant ce nom crochets incluses pour accéder aux objets.
[b]Exemple:[/b]
On remet le code PHP générateur des noms des checkbox comme ça:
[php]for($i=0;$i<3;$i++){
echo '<input type="checkbox" name="choix[]" value="'.$i.'" onclick="verif_check(this)">Valeur '.($i+1).'<br />';
}
[/php]
Ainsi, toutes les checkbox auront comme nom unique : "choix[]" ce qui oblige Javascript de considérer les objets ayant le nom "choix[]" comme un tableau.
Dans le code Javascript il faut changer la façon d'accéder aux checkbox par leur nom unique.
Comme ça:
[code]tab_choix = document.formulaire.elements["choix[]"]; //accès au tableau des checkbox[/code]
Cela donnera par exemple pour la première function un truc comme ça:
[code]<script>
function verif(){
choix = 0;
tab_choix = document.formulaire.elements["choix[]"]; //accès au tableau des checkbox
for(i=0;i<tab_choix.length;i++){
if(tab_choix[i].checked) {choix += 1;}
}
if(choix != 2) { alert("Vous devez sélectionner 2 options"); return false; }
else { alert("formulaire ok"); return true; }
}
</script> [/code]