2017-04-19 2 views
2

J'ai un problème où le gestionnaire de soumission de mon formulaire n'est pas appelé lorsque je déclenche manuellement un envoi du formulaire avec la classe «reCaptchaForm» avec JavaScript vanilla comme vu dans les extraits de code ci-dessous.jQuery formulaire gestionnaire de soumission ne pas être invoqué lorsque le rappel déclenche le formulaire manuel soumettre

Je le rappel onReCaptchaSuccess qui présentera manuellement la forme, mais quand je fais le soumettre gestionnaire ne s'invoqué pas - ce qui fonctionne lorsque je soumets le formulaire en mode natif dans le navigateur avec un <button> avec un type de « submit » .

Dans mon modèle où la forme vit:

<script type="text/javascript"> 
    require(['crmpicco/coursedetails'], function(details) { 
     details.init(); 
    }); 
    function onReCaptchaSuccess(token) { 
     document.getElementsByClassName("reCaptchaForm")[0].submit(); 
    } 
</script> 

Mon module RequireJS coursedetails.js:

define('crmpicco/coursedetails', [ 
    'jquery', 
    'intl-tel-input', 
    'jstz' 
], function($) { 
    var CourseDetails = { 
     init: function() {    
      this.initPhoneNumber(); 
     }, 

     initPhoneNumber: function() { 

      // ...some field cloning in here... 

      originField.closest('form').submit(function() {     
       // this form submit handler is never envoked! 
      }); 
     }, 
    }; 

    return CourseDetails; 
}); 

Je devine que je manque quelque chose ici évident, mais je ne vois pas pourquoi le gestionnaire de soumission n'est pas invoqué ici, car je crois comprendre que cela devrait s'amplifier.

EDIT: Bon, j'ai maintenant lu ceci qui sonne une cloche. https://stackoverflow.com/a/645556/691505 - Cependant, cela ne résout pas mon problème de capture de la soumission programmatique.

Répondre

0

Je suppose que j'ai répondu à ma propre question dans le edit ci-dessus.

Essentiellement - L'événement se déclenche uniquement lorsqu'il est activé par un utilisateur - et ne se déclenche pas lorsqu'il est activé par le code.