[Formulaire] Problème de label avec IE

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 : [Formulaire] Problème de label avec IE

par Victor BRITO » 14 janv. 2009, 18:04

Pour l'élément label, tu trouveras des détails dans la spécification HTML du W3C. ;)

[Formulaire] Problème de label avec IE

par eLman » 14 janv. 2009, 10:16

Bonjour,

J'ai déjà expliqué mon problème une première fois, mais je pense pas très clairement et peut être dans la mauvaise rubrique.
Je l'a refais donc en couleur et FULL HD :D

J'utilise pour mes formulaires une vérification des champs côté client en javascript. Pour ceci j'utilise les label dans mes formulaires HTML.

Voici l'un de mes formulaires :

Code : Tout sélectionner

<form name="formdepot" <?php if(array_key_exists('add',$_GET)){ ?> ACTION="../include/admin/valider.php?type=depot&methode=add"<?php } ?><?php if(array_key_exists('edit',$_GET)){ ?> ACTION="../include/admin/valider.php?type=depot&methode=edit&iddepot=<?php echo''.$iddepot.'';?>"<?php } ?> METHOD=post onSubmit="return validateFormDepot(this);"> <fieldset><legend align=top> Informations sur le d&eacute;p&ocirc;t </legend><br> <table BORDER=0 cellpadding="2" cellspacing="2"> <tr> <label id="label_lieu"><td>* Lieu du d&eacute;p&ocirc;t</td></label> <TD><INPUT type=text size=30 title="Le lieu du d&eacute;p&ocirc;t" name="lieu" <?php if(array_key_exists('edit',$_GET)) {?> value= "<?php echo''.$lieu.''; ?>" <?php } ?> ></TD> </tr> <tr> <label id="label_typedepot"><td>* Type du d&eacute;p&ocirc;t</td></label> <TD><INPUT type=text size=30 title="Le type du d&eacute;p&ocirc;t" name="typedepot" <?php if(array_key_exists('edit',$_GET)) {?> value= "<?php echo''.$type.''; ?>" <?php } ?> ></TD> </tr> <TR> <label id="label_adr"><td valign=top>Adresse du d&eacute;p&ocirc;t</td></label> <TD><textarea name="adr" cols="40" rows="4" title="L'adresse du d&eacute;p&ocirc;t"><?php if(array_key_exists('edit',$_GET)) {?><?php echo''.$adr.''; ?> <?php } ?></textarea></TD> </tr> </table> <p>(*) : Champs obligatoires</p> </fieldset> <br><INPUT TYPE=reset NAME=Bouton VALUE=" Annuler " onclick="history.back()"><INPUT type="submit" value=" Valider "> </form>
Et voici mon système de vérification en javascript qui affiche une alert à chaque fois qu'un champ n'est pas remplie correctement.

Code : Tout sélectionner

function isNotEmpty(data) { if (!data.value.match(/.+/)) return data.title + " est obligatoire"; return false; } function isString(data) { if (data.value.match(/\d+/)) return data.title + " n'est pas alphabetique"; return false; } function showError(data, ErrorMsg) { if (ErrorMsg){ //document.getElementById('label_'+data.name).innerHTML = ErrorMsg; //message d'erreur alert(ErrorMsg); data.focus(); //pointer l'objet à erreur return true; } else { document.getElementById('label_'+data.name).innerHTML = ''; //vider l'ex message d'erreur return false; } }

Code : Tout sélectionner

//Vérification du formulaire d'ajout d'un dépôt function validateFormDepot(form) { if ( !showError(form.lieu, isNotEmpty(form.lieu)) && !showError(form.typedepot, isNotEmpty(form.typedepot)) ) { return true; } return false; }
Comme vous le constatez, seuls mes deux premiers champs sont obligatoires.
Sous FF, si je ne remplie pas le premier champ il me fait une alerte, et pareil pour le second champ.

En revanche avec IE7, il me fait bien une alerte si je ne remplie pas le premier champ, mais il ne m'en fait pas pour le second !!
Et c'est comme cela avec tous mes autres formulaires, il vérifie et m'affiche bien une alerte pour les premiers champs de chaque formulaires mais pas pour les suivants ! Alors que FF le fait très bien !

A mon avis il y a un soucis dans la déclaration de mes labels ...

Aidez moi siouplaittttt xD

Merci.

EDIT :

Code : Tout sélectionner

<!-- Formulaire d'ajout ou de modification --> <form name="formdepot" <?php if(array_key_exists('add',$_GET)){ ?> ACTION="../include/admin/valider.php?type=depot&methode=add"<?php } ?><?php if(array_key_exists('edit',$_GET)){ ?> ACTION="../include/admin/valider.php?type=depot&methode=edit&iddepot=<?php echo''.$iddepot.'';?>"<?php } ?> METHOD=post onSubmit="return validateFormDepot(this);"> <fieldset><legend align=top> Informations sur le d&eacute;p&ocirc;t </legend><br> <table BORDER=0 cellpadding="2" cellspacing="2"> <tr> <td>* Lieu du d&eacute;p&ocirc;t</td> <TD><INPUT type=text size=30 title="Le lieu du d&eacute;p&ocirc;t" name="lieu" <?php if(array_key_exists('edit',$_GET)) {?> value= "<?php echo''.$lieu.''; ?>" <?php } ?> ><label id="label_lieu"></label></TD> </tr> <tr> <td>* Type du d&eacute;p&ocirc;t</td> <TD><INPUT type=text size=30 title="Le type du d&eacute;p&ocirc;t" name="typedepot" <?php if(array_key_exists('edit',$_GET)) {?> value= "<?php echo''.$type.''; ?>" <?php } ?> ><label id="label_typedepot"></label></TD> </tr> <TR> <td valign=top>Adresse du d&eacute;p&ocirc;t</td> <TD><textarea name="adr" cols="40" rows="4" title="L'adresse du d&eacute;p&ocirc;t"><?php if(array_key_exists('edit',$_GET)) {?><?php echo''.$adr.''; ?> <?php } ?></textarea><label id="label_adr"></label></TD> </tr> </table> <p>(*) : Champs obligatoires</p> </fieldset> <br><INPUT TYPE=reset NAME=Bouton VALUE=" Annuler " onclick="history.back()"><INPUT type="submit" value=" Valider "> </form>
Avec les labels à la fin ça fonctionne !!!

Comment ça se fait ?!