Conflit entre onblur et onchange

Résolu
carla3112 Messages postés 5 Date d'inscription jeudi 12 octobre 2006 Statut Membre Dernière intervention 11 avril 2007 - 11 avril 2007 à 13:57
carla3112 Messages postés 5 Date d'inscription jeudi 12 octobre 2006 Statut Membre Dernière intervention 11 avril 2007 - 11 avril 2007 à 16:21
Bonjour,
J'ai un souci lié à la façon dont js traite les événements.
Mon bug se produit de la façon suivante:
J'ai une page avec:
 - un bouton Save (submit du formulaire sur le onchange de cette image)
 - un champ input (avec un onblur dessus).
Quand je saisis quelquechose dans l'input, si juste après je clique sur mon image Save, seul le onchange du Save se déclenche. Le onblur de l'input passe à la trappe.
Quelqu'un aurait-il connu le même problème et trouvé comment le solutionner ?
Merci d'avance !
A voir également:

7 réponses

carla3112 Messages postés 5 Date d'inscription jeudi 12 octobre 2006 Statut Membre Dernière intervention 11 avril 2007
11 avril 2007 à 16:21
Il s'avère que gérer à part les événements onclick et onblur fonctionne.

Nouveau script:

<html>
 
    <script>
   
    function InitEvent()
      {
       var el = document.getElementById("ImgSubmit");
        if (el.addEventListener){
          el.addEventListener('click', SubmitIt, false);
        } else if (el.attachEvent) {
          el.attachEvent('onclick', SubmitIt);
        }     
       
       var el = document.getElementById("a");
        if (el.addEventListener){
          el.addEventListener('blur', BlurIt, false);
        } else if (el.attachEvent) {
          el.attachEvent('onblur', BlurIt);
        }
 
      }
     
    function SubmitIt()
      {
        document.myForm.submit();
      }
     
    function BlurIt()
      {
        document.getElementById('d').value = document.getElementById('c').value;
      }
   
   
function sendForm(idForm, strAction){
  formulaire = document.getElementById(idForm);
  formulaire.action = strAction ;
  formulaire.target = "_self" ;
  //formulaire.submit();
}
    </script>
    <form id='myForm' name='myForm' method='post' action='http://www.google.fr/'>
     
     
       
     
     
     
    </form>
 
</html>
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 avril 2007 à 14:38
Bonjour,

    onchange ? sur une image ?  ah ? c'est permis ? ça marche ?
    lié au submit peut-être ? qui "vient trop vite".
    setTimeout parfois nécessaire

    un tout petit extrait du code ?

    car chez moi... pas de souci. ( mais pas sur une image, ni onchange lié... )
    alors je dirais bien qu'il y a une erreur à la ligne 92,
        mais je n'en suis pas sûr...
   

<hr />


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



<hr />
0
carla3112 Messages postés 5 Date d'inscription jeudi 12 octobre 2006 Statut Membre Dernière intervention 11 avril 2007
11 avril 2007 à 15:04
Il est difficile de mettre mon code ici, même un extrait. Mais je reproduit quelquechose de similaire avec le code ci-dessous, sauf que c'est cette fois le onchange de l'image qui s'efface au profit du onblur.

<html>
 
    <script>
function sendForm(idForm, strAction){
  formulaire = document.getElementById(idForm);
  formulaire.action = strAction ;
  formulaire.target = "_self" ;
  formulaire.submit();
}
    </script>
    <form id='myForm' name='myForm' method='post' action='http://www.google.fr/'>
     
     
     
     
     
    </form>
 
</html>
0
carla3112 Messages postés 5 Date d'inscription jeudi 12 octobre 2006 Statut Membre Dernière intervention 11 avril 2007
11 avril 2007 à 15:05
Et, oui, pardon, j'ai dit onchange au lieu de onclick pour l'image.
0

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

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 avril 2007 à 15:35
    déjà une erreur ici : sendForm('http://www.google.fr/');"
    ça attend 2 paramètres..
    pourrais tu expliquer ce que tu tentes de faire ? j'ai du mal à comprendre le but...
<hr />


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



<hr />
0
carla3112 Messages postés 5 Date d'inscription jeudi 12 octobre 2006 Statut Membre Dernière intervention 11 avril 2007
11 avril 2007 à 15:38
oui, désolée, ça devrait être sendForm('myForm','http://www.google.fr/')

En fait, le problème c'est que j'ai plusieurs écrans dans mon appli où des "choses" doivent se passer (sur onchange et/ou onblur sur des inputs) et qu'elles ne se passent pas parce que le onclick (qui recharge la page) passe avant. Je n'arrive pas à le reproduire sur un mini test.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
11 avril 2007 à 16:07
>>le onclick (qui recharge la page) passe avant.
    déjà vu ça... pas dans le mêmes circonstances...
          car ici, pour moi c'est peu clair.
    mais setTimout devrait résoudre. ...onclick='setTimeout("document.myForm.submit();",100);'/><hr />
Cordialement        Bul     [mon Site]     [M'écrire]
<hr />
0
Rejoignez-nous