par
eLman » 13 janv. 2009, 17:03
Bonjour,
Voici mon problème. Je fais la vérification, côté client, de mes formulaires pour vérifier que les champs obligatoires ne sont pas vides et correctement remplis. Je fais ensuite la vérification en PHP.
Lorsqu'un champ n'est pas "valide" j'affiche une erreur pour avertir la personne. Tout marche impeccable sur FF mais plus sur IE. Je ne comprend pas.
Mon code du formulaire :
Code : Tout sélectionner
<!-- Formulaire d'ajout ou de modification d'un utilisateur -->
<form name="formmembre" <?php if(array_key_exists('add',$_GET)){ ?> ACTION="../include/admin/validermembre.php?type=membre&methode=add"<?php } ?><?php if(array_key_exists('edit',$_GET)){ ?> ACTION="../include/admin/validermembre.php?type=membre&methode=edit&iduser=<?php echo''.$iduser.'';?>"<?php } ?> METHOD=post onSubmit="return validateFormMembre(this);">
<fieldset><legend align=top> Informations du compte </legend><br>
<table BORDER=0 cellpadding="2" cellspacing="2">
<?php if ($_SESSION['Type_compte'] == 'Administrateur') { ?>
<tr>
<label id="label_type_cmpt"><td>* Type de Compte</td></label>
<TD><select size=1 title="Le Type de Compte" name="type_cmpt" class="txt16-000000">
<option value=""> Choisir un type </option>
<option value="Administrateur" <?php if(array_key_exists('edit',$_GET)) { if($type_compte == "Administrateur"){?>selected<?php }}?>> Administrateur </option>
<option value="Emprunteur"<?php if(array_key_exists('edit',$_GET)) { if($type_compte == "Emprunteur") {?>selected<?php }}?>> Emprunteur </option>
</select></TD>
</tr>
<?php } ?>
<tr>
<label id="label_nom"><td>* Nom</td></label>
<TD><INPUT type=text size=25 title="Le nom" name="nom" <?php if(array_key_exists('edit',$_GET)) {?> value= "<?php echo''.$nom.''; ?> " <?php } ?> ></TD>
</tr>
Code de la fonction de vérification javascript dans un fichier à part :
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/modification d'un utilisateur
function validateFormMembre(form)
{
if (
!showError(form.type_cmpt, isNotEmpty(form.type_cmpt))
&&
!showError(form.type_cmpt, isString(form.type_cmpt))
&&
!showError(form.nom, isNotEmpty(form.nom))
&&
!showError(form.nom, isString(form.nom))
&&
!showError(form.identifiant, isNotEmpty(form.identifiant))
&&
!showError(form.identifiant, isAlphaNum(form.identifiant))
&&
!showError(form.password, isNotEmpty(form.password))
&&
!showError(form.password, isAlphaNum(form.password))
&&
!showError(form.quota_serie, isNotEmpty(form.quota_serie))
&&
!showError(form.quota_serie, isNumeric(form.quota_serie))
&&
!showError(form.quota_autre, isNotEmpty(form.quota_autre))
&&
!showError(form.quota_autre, isNumeric(form.quota_autre))
&&
!showError(form.quota_nb_ex, isNotEmpty(form.quota_nb_ex))
&&
!showError(form.quota_nb_ex, isNumeric(form.quota_nb_ex))
&&
!showError(form.courriel, isNotEmpty(form.courriel))
&&
!showError(form.courriel, isEmail(form.courriel))
)
{
return true;
}
return false;
}
Alors dans mon formulaire, le message s'affiche correctement pour la liste déroulant type_compte, mais lorsque je laisse vide le champ nom, l'erreur javascript n'apparait pas sous IE :/
Alors que sous FFF elle apparait sans soucis en me disant : Le nom est obligatoire ...
Merci de votre aide !
EDIT : Alors en faite après encore quelques tests, pour chaque formulaire la vérification sur premier élément marche à chaque fois, mais pas les suivant sur IE.
JE NE COMPREND PASSSS !
Une question de label ?
Bonjour,
Voici mon problème. Je fais la vérification, côté client, de mes formulaires pour vérifier que les champs obligatoires ne sont pas vides et correctement remplis. Je fais ensuite la vérification en PHP.
Lorsqu'un champ n'est pas "valide" j'affiche une erreur pour avertir la personne. Tout marche impeccable sur FF mais plus sur IE. Je ne comprend pas.
Mon code du formulaire :
[code]
<!-- Formulaire d'ajout ou de modification d'un utilisateur -->
<form name="formmembre" <?php if(array_key_exists('add',$_GET)){ ?> ACTION="../include/admin/validermembre.php?type=membre&methode=add"<?php } ?><?php if(array_key_exists('edit',$_GET)){ ?> ACTION="../include/admin/validermembre.php?type=membre&methode=edit&iduser=<?php echo''.$iduser.'';?>"<?php } ?> METHOD=post onSubmit="return validateFormMembre(this);">
<fieldset><legend align=top> Informations du compte </legend><br>
<table BORDER=0 cellpadding="2" cellspacing="2">
<?php if ($_SESSION['Type_compte'] == 'Administrateur') { ?>
<tr>
<label id="label_type_cmpt"><td>* Type de Compte</td></label>
<TD><select size=1 title="Le Type de Compte" name="type_cmpt" class="txt16-000000">
<option value=""> Choisir un type </option>
<option value="Administrateur" <?php if(array_key_exists('edit',$_GET)) { if($type_compte == "Administrateur"){?>selected<?php }}?>> Administrateur </option>
<option value="Emprunteur"<?php if(array_key_exists('edit',$_GET)) { if($type_compte == "Emprunteur") {?>selected<?php }}?>> Emprunteur </option>
</select></TD>
</tr>
<?php } ?>
<tr>
<label id="label_nom"><td>* Nom</td></label>
<TD><INPUT type=text size=25 title="Le nom" name="nom" <?php if(array_key_exists('edit',$_GET)) {?> value= "<?php echo''.$nom.''; ?> " <?php } ?> ></TD>
</tr>
[/code]
Code de la fonction de vérification javascript dans un fichier à part :
[code]
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]
[code]
//Vérification du formulaire d'ajout/modification d'un utilisateur
function validateFormMembre(form)
{
if (
!showError(form.type_cmpt, isNotEmpty(form.type_cmpt))
&&
!showError(form.type_cmpt, isString(form.type_cmpt))
&&
!showError(form.nom, isNotEmpty(form.nom))
&&
!showError(form.nom, isString(form.nom))
&&
!showError(form.identifiant, isNotEmpty(form.identifiant))
&&
!showError(form.identifiant, isAlphaNum(form.identifiant))
&&
!showError(form.password, isNotEmpty(form.password))
&&
!showError(form.password, isAlphaNum(form.password))
&&
!showError(form.quota_serie, isNotEmpty(form.quota_serie))
&&
!showError(form.quota_serie, isNumeric(form.quota_serie))
&&
!showError(form.quota_autre, isNotEmpty(form.quota_autre))
&&
!showError(form.quota_autre, isNumeric(form.quota_autre))
&&
!showError(form.quota_nb_ex, isNotEmpty(form.quota_nb_ex))
&&
!showError(form.quota_nb_ex, isNumeric(form.quota_nb_ex))
&&
!showError(form.courriel, isNotEmpty(form.courriel))
&&
!showError(form.courriel, isEmail(form.courriel))
)
{
return true;
}
return false;
}
[/code]
Alors dans mon formulaire, le message s'affiche correctement pour la liste déroulant type_compte, mais lorsque je laisse vide le champ nom, l'erreur javascript n'apparait pas sous IE :/
Alors que sous FFF elle apparait sans soucis en me disant : Le nom est obligatoire ...
Merci de votre aide !
EDIT : Alors en faite après encore quelques tests, pour chaque formulaire la vérification sur premier élément marche à chaque fois, mais pas les suivant sur IE.
JE NE COMPREND PASSSS !
Une question de label ?