Utiliser onblur, sans appel [Résolu]

Messages postés
70
Date d'inscription
lundi 3 août 2009
Dernière intervention
9 juillet 2011
- - Dernière réponse : cs_moumouf
Messages postés
70
Date d'inscription
lundi 3 août 2009
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 :)
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de PetoleTeam
Messages postés
70
Date d'inscription
lundi 3 août 2009
Dernière intervention
9 juillet 2011
3
Merci
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 !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de cs_moumouf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
0
Merci
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)
Commenter la réponse de PetoleTeam
Messages postés
70
Date d'inscription
lundi 3 août 2009
Dernière intervention
9 juillet 2011
0
Merci
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...
}
Commenter la réponse de cs_moumouf
Messages postés
70
Date d'inscription
lundi 3 août 2009
Dernière intervention
9 juillet 2011
0
Merci
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 !
Commenter la réponse de cs_moumouf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.