Utiliser onblur, sans appel

Résolu
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011 - 21 juil. 2010 à 15:52
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011 - 22 juil. 2010 à 12:23
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

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
21 juil. 2010 à 22:58
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)
3
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
22 juil. 2010 à 12:23
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 !
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
21 juil. 2010 à 18:03
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)
0
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
21 juil. 2010 à 20:50
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...
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_moumouf Messages postés 70 Date d'inscription lundi 3 août 2009 Statut Membre Dernière intervention 9 juillet 2011
21 juil. 2010 à 23:32
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 !
0
Rejoignez-nous