Wie intercept form übermittelt zuverlässig?

Ich versuche abfangen aller Art von Formular für einen spezifischen Formular auf einer web-Seite. Es sieht sehr einfach mit jQuery: form.submit(function(e) {…}) und es funktioniert wunderbar, wenn ich auf den submit-button.

Aber es ist auch ein onChange-Eigenschaft auf ein Feld auswählen, die nicht this.form.submit() und es sieht aus wie dieser Aufruf umgeht meine Zuhörer (in Chromium/Firefox):

<script type="text/javascript">
    function submitForm(e) {
        window.alert('submitted');
        e.preventDefault();
        return false;
    }

    $(document).ready(function() {
        $('#bar').submit(submitForm);
    });
</script>

<form id="bar">
    <select name="name" onChange="this.form.submit()">
        <option>Foo</option>
        <option>Bar</option>
    </select>
    <br/>
    <input type="submit"/>
</form>

Offensichtlich im code oben habe ich das nur ändern könnte this.form.submit() zu einer bestimmten Referenz meiner submit listener. Jedoch in meiner realen app-so einfach ist es nicht, also bin ich auf der Suche nach Weg, wo ich nicht haben, ändern Sie die Eigenschaft onChange.

Wenn ich nicht einen dummen Fehler, aber das ist wirklich erwartet, browser-Verhalten, ich würde mich wirklich freuen, wenn Sie erklären könnten, den Ereignisablauf und warum dies führt zu der oben beschriebenen Symptome.

Oh, vergaß zu erwähnen, dass "$('#bar').submit()" für das onChange-Teil so gut funktioniert. Hat JS ausführen, eine Art "früh-bind' auf onX Attribute?

InformationsquelleAutor Felix Schwarz | 2010-10-18

Schreibe einen Kommentar