Executer la fonction situer dans le onblur d'un input [Résolu]

cs_Erick007 25 Messages postés jeudi 9 décembre 2004Date d'inscription 17 novembre 2009 Dernière intervention - 21 oct. 2008 à 18:24 - Dernière réponse : cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention
- 23 oct. 2008 à 18:37
Bonjour,

J'ai un petit problème que je ne sais pas si cela se fait. Je vous explique en premier ce que je veut faire, je me fais une fonction javascript (qui elle se fait appeler dans le onsubmit de la balise form) qui va aller vérifier les inputs de type (text, password et file) ayant l'attribut onblur.

Dans cette attribut onblur, je vais appeler une fonction javascript qui elle va me retourner un boolean. Ce qui va permettre de verifier chaque champ lorsqu'on perd le focus, mais je veut également verifier chacun de ces champs (ayant l'attribut onlbur) dans ma fonction appeler dans le onsubmit.

Voila ma question, je voudrait que dans ma boucle qui vérifie chacun des champs, qui exécute la fonction qui est dans le onblur de ce champs et qui me retourne le boolean.

Voici mon code (je tien a mentionner que je nai pas terminer, mais si je regle ce probleme... cela pourrais me sauver enormement de job):

Ma fonction javascript appeler dans le onsubmit qui verifie chacun des champs:
function checkForm(myForm) {
    var isValid   = true;
    var listInput = myForm.getElementsByTagName("input");
    for (var i = 0; i < listInput.length; i++) {
        var item = listInput[i];
        if (((item.type "text") || (item.type "password") || (item.type == "file")) && (item.onblur != undefined)) {
            alert(item.onblur);
            isValid = checkField(item); //Voila c'est ici, on ce moment j'utilise ma fonction directement.
// Mais je voudrait en quelque sorte que javascript me permetrait sa: isValid =item.onblur;
// Mais sa ne fonctionne pas, il n'execute pas la fonction qui est comme valeur dans l'attribut onblur.
        }
    }

    if (isValid) {
        return true;
    } else {
        alert("not valid");
        return false;
    }
}

Ma fonction javascript qui se fait appeler dans le onblur:
function checkField(myField) {
    if (myField.value != "") {
        return true;
    } else {
        return false;
    }
}

Mon exemple html que je me serta fin de tests:
<form id ="inscription" onsubmit="return checkForm(this);">
   

   

   

   
</form>

Merci
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 22 oct. 2008 à 10:11
3
Merci
bonjour,

getAttribute ?

    function checkForm(frm)
    {    for ( n=0;n<frm.elements.length;n++)
         {    if (frm.elements[n].getAttribute("onblur"))
             {   il y a un onblur sur le champ    }   
        }
   }

Cordialement

          Bul [mon Site] [M'écrire]         

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 22 oct. 2008 à 11:15
0
Merci
ou même
( pour compatibilité avec IE par exemple que je n'avais pas regardé ! )

<script>
    function checkForm(frm)
    {    for ( n=0;n<frm.elements.length;n++)
        {    if ( frm.elements[n].onblur )
            {    eval( frm.elements[n].onblur() );    }    // "au plus simple" pour exécuter
        }                                                            // peut mieux faire ( j'aime pas eval )
        return false;
    }
</script>
<form onsubmit="return checkForm(this);">
   

   

   

   
</form>

Cordialement

          Bul [mon Site] [M'écrire]         
Commenter la réponse de cs_bultez
cs_Erick007 25 Messages postés jeudi 9 décembre 2004Date d'inscription 17 novembre 2009 Dernière intervention - 22 oct. 2008 à 14:53
0
Merci
Haa super, c'est ce que j'avais de besoin getAttribute

Lol en entendant de ta réponse, j'avais régler mon problème, mais getAttribute va me permetre de remplacer 4 lignes.

Regarde comment j'avais passer lol, j'ai converti ma fonction onblur en string, ensuite aller chercher les instructions qui avais dans cette fonction.

myFunc = item.onblur.toString();
var posFirst = myFunc.lastIndexOf("{") + 1;
var posLast = myFunc.lastIndexOf("}") - 1;
myFunc = myFunc.substring(posFirst, posLast);

Merci beaucoup
Commenter la réponse de cs_Erick007
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 23 oct. 2008 à 09:42
0
Merci
attention... getAttribute ne fonctionne pas génial, et
   pas de la même manière, avec tous les navigateurs.
tente plutôt           if ( frm.elements[n].onblur )  ....
          Bul [mon Site] [M'écrire]         
Commenter la réponse de cs_bultez
cs_Erick007 25 Messages postés jeudi 9 décembre 2004Date d'inscription 17 novembre 2009 Dernière intervention - 23 oct. 2008 à 14:35
0
Merci
Bonjour,

j'ai esseyer frm.elements[n].onblur mais sa me retourne la même chose que lorsque je fais item.onblur. C'est a dire qui me retourne une fonction qui est:

fonction onblur(event) {
    checkField(this);
}

Et je ne sais comment faire exécuter cette fonction pour que j'arrive a faire exécuter ces instructions.
Avant que tu me montre getAttribute, je prennais cette fonction onblur je la transformait en string et je pouvais aller chercher que les instructions pour pouvoir les faire exécuter.

Je vais vérifier pour getAttribute si ce que je veut faire ce fait sur les navigateurs connus, merci de m'avoir avertis.
Commenter la réponse de cs_Erick007
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 23 oct. 2008 à 14:44
0
Merci
tel que tu fais, tu remplace la fonction onblur
et this... c'est cette fonction.

le this faut le mettre dans l'appel
( là j'ai mis alert.. c'est pareil )

<script>
    function checkForm(frm)
    {    for ( n= 0;n<frm.elements.length;n++)
        {    if ( frm.elements[n].onblur )
            {    eval( frm.elements[n].onblur() );    }    // "au plus simple" pour exécuter
        }                                                            // peut mieux faire ( j'aime pas eval )
        return false;
    }
</script>
<form onsubmit ="return checkForm(this);">
   

   

   

   
</form>

          Bul [mon Site] [M'écrire]         
Commenter la réponse de cs_bultez
cs_Erick007 25 Messages postés jeudi 9 décembre 2004Date d'inscription 17 novembre 2009 Dernière intervention - 23 oct. 2008 à 17:02
0
Merci
Ok c'est bon sa fonctionne.

Et pour getAttribute, effectivement pour internet explorer il me retourne:

function anonymous() {
     checkField(this);
}

Au lieux de firefox que lui me retourne tout simplement:

checkField(this);

Merci
Commenter la réponse de cs_Erick007
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 23 oct. 2008 à 18:37
0
Merci
exact, c'est l'une des différence
( pas la seule je crois, mais Alzheimer me guette )
@+
Commenter la réponse de cs_bultez

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.