Problème validation VS label

Fermé
HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015 - 4 mars 2015 à 13:49
HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015 - 10 mars 2015 à 14:49
Bonjour,

j'ai un petit soucis entre 2 attribut de checkbox (plusieurs successives), à savoir, name et id.

mon index traite la vérification de la manière suivante :

nbrecases = document.mail_form.case.id.length
flag = 0
for (i = 0; i < nbrecases ; i++) {
if (document.mail_form.case[i].checked) {
flag = 1}}

if (flag == 0) {
alert("Veuillez sélectionner au moins une salle.")
return false; }

Dans le formulaire, pour les checkbox suivantes (juste une pour l'exemple):
.
.
.
if ($erreur_case) {
echo(stripslashes($erreur_case));
} else
.
.
.
<table>
<?php if ($erreur_case) {echo($icone);}?>

<td>
<label for="case[2]" class="control-label">
<font size="2">cb</font>
<span class="help-block">21 places</span></label>
</td>

<td class="td_cbox">
<input class="form-control" type="checkbox"
onfocus="this.blur();"
onclick="checkbox_selected(this.mail_form)" name="case[2]"
id="case[2]" <?php if ($_GET['check'] == 'cb') { echo
'checked="checked"'; } ?> value="Sélectionnée"<?php if
($_SESSION['case'][2] == "cb") {echo(" checked");}?>>
</td>

Et en fait ca fonctionnait très bien jusqu'à l'ajout des <label>, qui font que l'erreur n'est simplement plus traité ... J'ai essayé pleiiiin de choses, changer l'ID et le NAME a tour de rôle identique ou non en fonction de plusieurs code javascript différent pour gérer les erreurs, mais ca me génère toujours le même problème...

J'ai peur que ca soit un truc stupide... ^^, merci d'avance si vous trouvé quoi!

Ben.

2 réponses

HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015
4 mars 2015 à 13:49
le : onclick="checkbox_selected(this.mail_form)"
était pour une autre vérification test.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
4 mars 2015 à 13:56
Bonjour,

L'utilisation du FOR dans les LABEL doit utiliser les ID des checkbox. (pas le NAME)
et que normalement un ID ne peut pas être sous la forme d'un array ...

Essayes ceci :

<?php if ($erreur_case) {echo($icone);}?>

<td>
<label for="case_2" class="control-label">
<font size="2">cb</font>
<span class="help-block">21 places</span></label>
</td>

<td class="td_cbox">
<input class="form-control" type="checkbox"
onfocus="this.blur();"
onclick="checkbox_selected(this.mail_form)" name="case[]"
id="case_2" <?php if ($_GET['check'] == 'cb') { echo
'checked="checked"'; } ?> value="Sélectionnée"<?php if
($_SESSION['case'][2] == "cb") {echo(" checked");}?>>
</td> 


Pour ce qui est du traitement Javascript.. essayes ceci :

var chk_arr =  document.getElementsByName("case[]");
var nbrecases = chk_arr.length;  
var flag = 0;           
for(k=0;k< chklength;k++){
    if(chk_arr[k].checked){
      flag ++;
    }
} 
if (flag == 0) {
 alert("Veuillez sélectionner au moins une salle.")
 return false; 
}


PS: A l'avenir ...Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

0
HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015
4 mars 2015 à 14:24
Ah oui désolé, je le ferai, je ne savais plus comment faire et je suis au boulot donc j'ai été vite.

D'accord, merci je vais essayé ca tout de suite. Sinon oui je sais que le FOR utilise l'ID, seulement j'ai eu un autre problème, ma vérification JS n'aimait pas s'occuper de ID différents et je suis pourtant obligé avec le label, je pensais donc utilisé le name pour le JS avec getElementsByName, mais... trop de complications.
Je vais essayé ce que tu m'a donné ;)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015
4 mars 2015 à 14:28
<block>, je pensais donc utilisé le name pour le JS avec getElementsByName, mais... trop de complications. <block>
C'est exactement ce que fait mon code...
Sachant que dans le NAME de TOUTES tes checkbox tu y mettra le même ... à savoir :
case[]
0
HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015
4 mars 2015 à 14:50
Hélas il passe toujours outre la vérification des checkboxs...
0
HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié par HellBenito le 4/03/2015 à 14:54
Ouep j'ai vu après ^^. J'ai essayé 3 méthodes de vérification différentes mais toujours la même erreur. Il valide un à un les paramètre et arrivé aux checkbox il ne retourne rien et se contente d'envoyer le formulaire oO (et tout ca depuis que j'ai mis les labels)
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > HellBenito Messages postés 56 Date d'inscription vendredi 28 mars 2014 Statut Membre Dernière intervention 20 mars 2015
4 mars 2015 à 15:33
Pas possible...
Tu as testé mon code ??

EDIT : Correction de mon code (j'ai oublié de renommer une des variables en ajustant à ton code initiale...)
var chk_arr =  document.getElementsByName("case[]");
var nbrecases = chk_arr.length;  
var flag = 0;           
for(k=0;k< nbrecases ;k++){
    if(chk_arr[k].checked){
      flag ++;
    }
} 
if (flag == 0) {
 alert("Veuillez sélectionner au moins une salle.")
 return false; 
}
0