Bonjour,
Désolé pour le titre de la discussion, je n'ai pas trouvé mieux
Sur ma page HTML, j'ai un formulaire qui contient des champs (input, ou select) dont certains disposent de l'appel de fonctions Javascript sur l'attribut onblur.
Il s'agit en fait de fonctions de validation (j'en ai une dizaine de différentes).
Par exemple, je vais avoir ceci :
Ces méthodes de validation retournent un booléen, indiquant si le champ est valide ou pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <input ... onblur="checkRequired(this, ...);"/> <input ... onblur="checkMinLength(this, ...);"/> ...
Ceci fonctionne très bien, à partir du moment où l'utilisateur entre dans tous les champs qui ont des validations.
Ce que je voudrais avoir maintenant, c'est une sorte de validation "globale" quand l'utilisateur clique sur le bouton Submit du formulaire. J'entends par là que dès qu'il clique sur le bouton Submit, une fonction Javascript va exécuter toutes les fonctions de validation, et ne soumettre le formulaire au serveur si et seulement si toutes les validations sont bonnes.
J'ai presque réussi à faire cela avec ce code :
Ca fonctionne, mais le souci c'est que si l'un des champs n'est pas valide, le formulaire est quand même soumis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 function checkAllFields(button) { var form = button.form; if (form) { for (var x = 0; x < form.elements.length; x++) { var field = form.elements[x]; // J'ai zappé quelques tests ici pour vérifier le type de champ. if (field.onblur) { field.onblur(); } } } }
Pour résoudre cela, il faudrait que ma fonction checkAllFields retourne un booléen qui vaut vrai si tous les champs sont valides, et faux sinon.
Le problème, c'est que je n'arrive pas à récupérer la valeur retournée par l'évaluation de la fonction contenue dans l'attribut onblur de mon champ.
Comment puis-je faire cela ?
Partager