2017-03-13 1 views
0

Pourquoi cela ne fonctionnera-t-il pas?
J'ai une série d'événements où <body onload=""> === déclenche ==> ma autoload() fonction === devrait déclencher ===>$(document).ready === devrait déclencher ==>console.log(' FOCUS/BLUR EVENT ');La fonction .on() de document ready ne détecte pas les événements déclenchés par la fonction 'onload'

Maintenant, ma autoLoad() fonction ci-dessous est Elle est clairement déclenchée, car elle transforme les couleurs de fond des entrées en rouge, mais aucun message "FOCUS EVENT" ou "BLUR EVENT" n'est enregistré dans la console. Avec 4 tags <inputs>, je pense que j'obtiendrais 4 messages "FOCUS EVENT" & 4 "BLUR EVENT".

<html> 
<head> 
    <script src="../../js/jquery-3.1.1.min.js"></script>   
    <script> 
     function consoleLogger1() { 
      console.log(' FOCUS EVENT '); 
     } 
     function consoleLogger2() { 
      console.log(' BLUR EVENT '); 
     } 
     $(document).ready(function(){     //EVENT LISTENER 
      $("form input").on("focus", consoleLogger1); 
      $("form input").on("blur", consoleLogger2); 
     }); 
     function autoLoad() { 
      $("form input").each(function() { 
       $(this).css('background-color', 'red'); //WORKS! 
       $(this).focus(); 
          /*Should trigger the event-listener above 
          to trigger consoleLogger1 above, but doesn't.*/ 
       $(this).blur(); 
          /*Should trigger the event-listener above 
          to trigger consoleLogger2 above, but doesn't.*/ 
      }); 
     } 
    </script> 

</head> 

<!--MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM---DIVIDER---MMMMMMMMMMMMMMMMMMMMMMMMMMM--> 

<body onload="autoLoad()"> 
    <form> 
     <input style="width: 136px;"></input><br> 
     <input style="width: 136px;"></input><br> 
     <input style="width: 136px;"></input><br> 
     <input style="width: 136px;"></input><br> 
    </form> 
</body> 

</html> 

Répondre

0

Je ne sais pas pourquoi cela n'a pas fonctionné, mais une solution réussie, était de supprimer les deux lignes écouteur d'événement ...

 $("form input").on("focus", consoleLogger1); 
     $("form input").on("blur", consoleLogger2); 

... de la fonction $(document).ready , et à la place les insérer comme la première chose à l'intérieur de la fonction réelle autoLoader().