Onblur : bug

japi33 Messages postés 9 Date d'inscription vendredi 16 juillet 2004 Statut Membre Dernière intervention 19 mars 2007 - 19 mars 2007 à 11:37
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 19 mars 2007 à 13:11
Bonjour,
soit un formulaire html avec 3 zones de texte;
la saisie etant obligatoire, je leur ajoute :
onblur="javascript:quit_mazone1()"
...
onblur="javascript:quit_mazone2()"
...
onblur="javascript:quit_mazone3()"

le code correspondant est:
function quit_mazone1()
{
   if (document.form.mazone1.value==""){mazone1.focus();}
}
function quit_mazone2()
{
   if (document.form.mazone2.value==""){mazone2.focus();}
}
function quit_mazone3()
{
   if (document.form.mazone3.value==""){mazone3.focus();}
}
resultat:
si je sort d'une zone de texte en la laissant vide, le code s'execute sans problème mais le curseur clignote dans la zone en question mais aussi dans la suivante. du vrai ping pong et impossible de prendre la main. obligé de faire ctrl+alt+supp.
une idée ?
merci bcp.
JP

2 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
19 mars 2007 à 12:37
Bonjour,

° déjà, il y a une erreur :  if (document.form.mazone1.value= =""){mazone1.focus();}
    ce devrait être document.form.mazone1

° éviter d'utiliser un name = un mot réservé du html/javascript. ici form.
    plutôt mettre "frm", par exemple...

° 3 fonctions pour 3 zones... et s'il y avait 100 zones : 100 fonctions ?
    pas normal en informatique. il faut n'en faire qu'une

° tu aurais pu donner le formulaire... ça nous éviterais de le faire

° la "boucle do infernale" s'explique parfaitement :

     on est sur le champ 1, on clique sur le champ 2
     dans l'ordre : onblur 1 ==> test vide ==> focus 1 ==> onblur 2 ==> test vide ==> focus 2  ...

donc, par exemple, si on veut rester dans le même esprit ,
    tester si le "champ onblur" est bien celui sur lequel on vient de cliquer...

ch'tit exemple :

<script type ="text/javascript">
function quit(z)
{
    if ( z.name==document.activeElement.name )
   {
        if (z.value.length==0)
        {
            z.focus();
        }
    }
}
</script>
<form name="frm">
   
   
   
</form>

     tel que c'est là, avec document.activeElement, c'est exclusif IE.
     dans les snippets il y a un truc pour le remplacer sous FF.



<hr />



Cordialement            Bul         [mon Site]     [M'écrire]           




<hr />
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
19 mars 2007 à 13:11
euh... jai fait n'importe quoi dans la function....
        l'alcool sans aucun doute...

<form name="frm">
   
   
   
</form>
<script type="text/javascript">
    document.frm.mazone1.focus();
    var tmp=document.frm.mazone1;
    function quit(z)
    {
        if ( tmp.value.length>0 ) { tmp=z; }
        tmp.focus();
    }
</script>

 

<hr />                        Cordialement               Bul         [mon Site]     [M'écrire]<hr />
0

Discussions similaires

onchange() dans un