Salut
Aloars ce topic serait normalement lié à celui ci (Php) :
récupérer la valeur d'un champ text
Je vais tenté d'apporter une solution théoriquement simple (il y en d'autres très certainement) pour vérifier en JS dans ce cas présent.
C'est à dire des input/text sous forme de tableau.
Exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <form method="post" onsubmit="return controle();" action="essai.php">
<fieldset>
<?php
// Une boucle
$cpt = 1;
while (... etc ...) {
?>
<p>
<label><?php echo $ligne['shortname']; ?></label>
<input type="text" id="coef_<?php echo $cpt; ?>" name="coef[<?php echo $ligne['courseid']; ?>]" value="" />
</p>
<?php
$cpt++;
}
?>
</fieldset>
</form> |
Le HTML généré donnerait quelque chose comme :
1 2 3 4 5 6 7 8 9 10 11 12
| <form method="post" onsubmit="return controle();" action="essai.php">
<fieldset>
<p>
<label>Cours A</label>
<input type="text" id="coef_1" name="coef[14]" value="" />
</p>
<p>
<label>Cours B</label>
<input type="text" id="coef_2" name="coef[20]" value="" />
</p>
</fieldset>
</form> |
Le code JS :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| function controle() {
var i, coef, erreur, i_erreur, msg_type, msg;
erreur = false;
msg = '';
msg_type = "ERREUR";
coef = document.getElementsByName("coef[]");
//alert("coef : " + coef);
if (coef) {
for (i = 0; i < coef.length; i++) {
//alert("coef : " + coef[i].value);
if (coef[i].value == "") {
i_erreur = i + 1;
msg += "[coef " + i_erreur + "] " + msg_type + "\n";
erreur = true;
}
}
}
if (erreur) {
alert(msg);
document.getElementById("coef_" + i_erreur).focus();
return false;
}
return true;
} |
Le principe est de déclencher le contrôle JS au niveau du formulaire avec l'évènement : onsubmit
Et aussi (surtout) de faire un return : onsubmit="return controle();"
Puis de faire les vérification, et dès qu'on détecte une erreur, initialiser la variable "erreur" à true de façon que cela renvoie false.
Dans ce cas le formulaire ne sera pas soumis (submité).
Pour parcourir un input/text en tableau, le moyen ici c'est de le faire par le biais de son nom : document.getElementsByName("coef[]")
Et de mettre les crochets : coef[]
Une boucle permettra alors de le parcourir.
En espérant que cela puisse vous aider.
![;)](https://www.developpez.net/forums/images/smilies/icon_wink.gif)
Partager