La malédiction du focus/blur

Résolu
sapakus Messages postés 96 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 10 février 2011 - 12 juil. 2008 à 16:36
sapakus Messages postés 96 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 10 février 2011 - 12 juil. 2008 à 21:57
Bonjour,

Pour pallier à l'absence de fonction permettant de controler l'état focus ou blur d'un élément de formulaire, il est de coutume d'avoir un booléen que l'on passe de true à false et de false à true, genre :

Mais j'avoue donner ma langue à la marmotte, dans ce cas précis :
J'ai deux (un des deux à le focus) et je veux déclencher une fonction (qui met le display des deux input à none) quand les deux n'ont plus le focus.

Le problème est qu'avec le système précédant  on a :
[true,false] on démarre avec le focus sur le 1er input par exemple
[false,false] on vient de quitter le premier champ on est pour ainsi dire dans le vide pendant le onblur
[false,true] on est arrivé sur le deuxieme
[false,false] je quitte le deuxieme pour aller ailleurs
etc..
Bref , avec ce système on ne peut pas déclencher une fonction avec onBlur qui pourra controler la perte de focus définitive (dans le cas où on a cliqué en dehors des deux champs)

Voilà, j'espère ne pas avoir été trop confus !

Merci de vos suggestions

S
apakus

4 réponses

sapakus Messages postés 96 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 10 février 2011 3
12 juil. 2008 à 18:47
Merci de ton aide, mais j'avais déja essayer comme ça. En fait le problème est que le onblur du champ que l'on quitte se déclenche avant le onfocus du champ sur lequel on va ! Mais j'ai une solution maintenant :
A chaque appel de la fonction on se retrouve à [false,false] sauf si on donne le temps à onfocus de passer sa variable à true avec un setTimeout:

<head>
<script type='text/javascript'>
var input1  = false;
var input2 = false;
function fct ()
{    if(input1 false && input2 false)
    {
        alert("ok");
    }
}
function Blur2() {
   setTimeout("fct();",200);
}
</script>
</head>

  
  

ouf !

S
apakus
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 juil. 2008 à 17:38
Salut,

<head>
<script type='text/javascript'>
var input1  = null;
var input2 = null;

function Blur2() {   if(input1 false && input2 false) {
      ton code...
   }
}
</script>
</head>

   
   

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
12 juil. 2008 à 21:49
alors met toi en réponse acceptée !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
sapakus Messages postés 96 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 10 février 2011 3
12 juil. 2008 à 21:57
Youpi !

a+

S
apakus
0
Rejoignez-nous