J'ai un formulaire qui contient deux zones de texte, chacune concernant un groupe de mails.La validation de formulaire est interrompue lorsqu'une vérification est invalide en javascript
<form name="myform" action='entryupdate.php' method="post">
<textarea name="mailgroup1" rows="2" cols="50" onchange="checkFormValue();">
</textarea>
<textarea name="mailgroup2" rows="2" cols="50" onchange="checkFormValue();">
</textarea>
<input name="update" type="submit" value="Update description"/>
</form>
Et j'ai une fonction pour vérifier si un email est bien formaté, après nos normes internes.
function checkmail(component){
var emailpattern = /^[A-z0-9\._-][email protected][A-z0-9][A-z0-9-]*(\.[A-z0-9_-]+)*\.([A-z]{2,6})$/;
var mails = component.value.split(/[\n\r\t ]+/);
var valid = true;
for(var i=0; i<mails.length; i++){
valid = valid && emailpattern.test(mails[i]);
alert("Mail: "+mails[i]+" Valid: "+ emailpattern.test(mails[i]));
}
if(valid){
component.setAttribute('class', 'valid');
}else{
component.setAttribute('class', 'invalid');
}
return valid;
}
Si un champ a est classe INVALID, le style suivant est appliqué:
.invalid
{
background-color:#fffacd;
}
Lorsqu'une valeur est modifiée dans l'un des textarea, la fonction suivante est appelée, qui vérifier si l'une des valeurs n'est pas correctement formatée et, si c'est le cas, le bouton d'envoi est désactivé.
function checkFormValue(){
var validform = true;
validform = validform && checkmail(document.myform.mailgroup1) && checkmail(document.myform.mailgroup2);
document.hotfixomat.update.disabled = !validform;
}
Le problème est, si le premier contrôle return false, le deuxième contrôle n'est pas fait, et s'il arrive que la valeur n'est pas formaté correctement, le changement est le style ne se fait pas. (mais le bouton de soumission est désactivé). Pourquoi les vérifications sont-elles interrompues?