Javascript überschreiben form onsubmit-Ereignis funktioniert nicht

Ich bin überschreiben einer form submit event wie diesem:

form.onsubmit = function(event) {
  event.preventDefault();

Aber wenn ich Anrufe, reichen auf die form, wie dies in einer separaten Funktion:

form.submit();

Den onsubmit-Funktion nicht aufgerufen und das Formular gepostet wird, wie üblich.

Irgendwelche Gedanken?

Edit:

Bin ich auch eine Datei erstellen Eingabe in dieses Formular zu und ruft seinen click-Ereignis sofort. Würde dies Auswirkungen auf die form-submit-Ereignis?:

if (fileInput && document.createEvent)
{
    var evt = document.createEvent('MouseEvents');
    evt.initEvent('click', true, false);
    fileInput.dispatchEvent(evt);
}

Edit #2:

Ich bin dem Absenden des Formulars durch den Aufruf des Formular-submit-Funktion nach der Datei ein Wert geändert hat:

function nameFileLabel(id)
{
    var f = document.getElementById('fileForm' + id);
    var l = document.getElementById("fileText_" + id);
    var i = document.getElementById("fInputId" + id);
    if (i.value != '')
    {
        l.innerHTML = i.value.replace('fakepath', '...');
        var theUploadForm = document.getElementById('fileDiv_' + id);
        theUploadForm.style.visibility = 'visible';
        theUploadForm.style.display = 'block';
        f.submit();
    }
}
Sie können auch versuchen onClick="Funktionsname" in Ihren html-Formular-tag.
was kann ich jetzt sehen, in den bearbeiteten code, den Sie veröffentlichen Sie Ihre form mit Hilfe von javascript. Und damit das "onsubmit" ist nicht immer genannt. Grund ist einfach, dass der browser denkt, dass Sie die übermittlung Ihrer form durch den code, so dass Sie bereits getan haben, die Vorverarbeitung, bevor Sie den Aufruf der submit-Methode. Also, IMO, bevor Sie rufen Sie die f.submit () - Anweisung, rufen Sie alle anderen Methoden, die Sie durchführen möchten, bevor das Formular an.
Manish, siehe meine Lösung unten. Sie waren auf der richtigen Spur. Vielen Dank für Ihre Hilfe. 🙂

InformationsquelleAutor Xavi | 2015-04-30

Schreibe einen Kommentar