Utiliser onblur, sans appel [Résolu]

Signaler
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
-
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011
-
Bonjour,

Je développe un formulaire de saisie qui pour chaque champs possède une balise onblur="verif(this, this.form)"

Y a t-il un moyen (via un window.onload="verif(formName)" par ex) d'exécuter cette fonction de vérification sur chaque champs (pour un formulaire donnée) sans avoir a faire l'appel depuis chaque balise input comme c'est le cas actuellement.
Merci de bien vouloir m'indiquer la marche à suivre :)

5 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
pour boucler tous les champs il suffit de faire un appel de ce type...
//-- recup objet FORM
var O_Form = document.getElementById( id_form); // par exemple

pour récupérer les éléments...
//-- 1st syntaxe
var T_Input = O_Form.getElementsByTagName('INPUT');
//-- 2nd syntaxe, plus complete
var T_Input = O_Form.elements;
T_Input contient une nodeList des éléments demandés

et pour l'affectation une simple boucle
for( var i =0 , nb = T_Input.length; i < nb; i++){
  var O_Input = T_Input[i]; // recup de l'objet
  //-- si INPUT texte, ceci est un exemple
  if( O_Input.type == "text"){
    //-- affectation de la fonction de verif
    O_Input.onblur = function(){
      Verif( this, O_Form);
    }
  }
}

concernant la fonction Verif(), c'est une autre histoire...
tout dépend du nombre de champs à tester, de l'opportunité de tester individuellement sur chaque onblur...etc...

à toi de voir !
;O)
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

Pour clore le sujet voici le code mis en place qui fonctionne :


window.onload = function() {
formatUsrFldFrm();
}

function formatUsrFldFrm() {
var O_Form = document.getElementById('usrFrm');
var T_Input = O_Form.elements;

for( var i =0 , nb = T_Input.length; i < nb; i++){
  var O_Input = T_Input[i]; // recup de l'objet
    O_Input.onblur = function(){
      valFldUsrFrm( this, O_Form);
    }
}
}


Je n'ai pas limité aux types input car j'ai un champs date de naissance dont les éléments (jour mois année) sont décomposés en 3 listes déroulantes.

Encore merci pour le tuyau qui vas me faire gagner bien du temps !
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
ReBonjour,
Y a t-il un moyen (via un window.onload="verif(formName)" par ex)
c'est exactement cela !

- Récupération de l'objet FORM
- Parcours, ou récupération des éléments INPUT ou autre
- Affectation d'une fonction anonyme qui appelle la fonction voulue

voila pour le principe !

;O)
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

le soucis que j'ai concerne le parcours des champs, je ne vois pas bien comment m'y prendre :
1 - comment boucler sur les champs, et à quel moment ?
2 - comment lui dire d'effectuer l'appel sur la fonction lorsque on quitte le champs ?

window.onload = function() {
verif(??);
}


function verif(objFrm, obj) {
if(obj.name 'nom' && obj.value '') {
blabla...
}
else if(obj.name 'prenom' && obj.value '') {
blabla..
}
etc...
}
Messages postés
70
Date d'inscription
lundi 3 août 2009
Statut
Membre
Dernière intervention
9 juillet 2011

Wow ! génial !
tout est très clair :

O_Input.onblur = function(){
      Verif( this, O_Form);
    }



c'était avec ce genre de truc que j'avais du mal.

Un grand merci pour ton aide !