2017-02-22 5 views
0

Ich bin fest, versuchen, mein Formular mit der Funktion senden (formElement.submit()) einzureichen. Nun, eigentlich werden die form-input-Werte an das Backend gesendet, aber ich versuche es zu verhindern und dazwischen ajax hinzuzufügen.Auslöser onsubmit ohne Submit-Button

Jade/Mops

form#score-form(method="POST" action="/leaderboard") 
    input#submit-score(type="hidden" value="" name="submitscore") 
    //value is fetched from JS 

JS

scoreForm.submit(); 
scoreForm.addEventListener('submit', function(){ 
    //Nothing here will be invoked 
}); 

Wenn jedoch eine Absenden-Button verwenden, funktioniert es als

bestimmt
form#score-form(method="POST" action="/leaderboard") 
    input#submit-score(type="hidden" value="" name="submitscore") 
    button(type="submit") 

scoreForm.submit(); 
scoreForm.addEventListener('submit', function(){ 
    console.log("works"); //logs works 
}); 

Alles funktioniert gut, außer der Tatsache, dass es scheint, Das .submit() ruft On-Submit nicht auf. Gibt es einen Workaround (preferfable with vanilla js), um dem Programm einen Hinweis zu geben, dass das Formular auch mit .submit() übergeben wird?

Dank

+0

Sind Sie sicher, dass Sie den Ereignis-Listener registrieren, bevor Sie das Ereignis aufrufen? –

+0

Ah, eigentlich bin ich nicht. Das und die .click() Simulation funktioniert perfekt, danke :) – Kazordomo

Antwort

0

Sie müssen den Hörer hinzufügen, bevor Sie tatsächlich einreichen:

scoreForm.addEventListener('submit', function(){ 
    console.log("works"); //logs works 
}); 
scoreForm.submit(); 

Ansonsten das Ereignis ausgelöst wird, bevor Sie ein Zuhörer

bearbeiten eingerichtet haben: es scheint Ich habe falsch gelesen, was du gefragt hast. Die Antwort, die Sie suchen, ist, dass submit() den Hörer nicht auslöst. Sie können es simulieren, indem Sie auf die Schaltfläche mit click() programmgesteuert klicken. Here is a good Erklärung dieses Verhaltens. versuch:

scoreForm.querySelector('input[type="submit"]').click() 
+0

Yepp, das ist es! Vielen Dank! – Kazordomo