Das Formular wurde zweimal mit submit () bei der Eingabe gesendet

Ich hatte einen ähnlichen jQuery / HTML-Code:

<code><form action="/SomeAction" method="post">
  <input id="my-textbox" type="text" placeholder="Write something and press enter to continue..." />
</form>

<script type="text/javascript">
 $(function() {
     $('#my-textbox').keyup(function(e) {
        var $textbox = $(this);
        if ($textbox.val().length > 0 && e.keyCode == 13) {
           $textbox.parent('form').submit();
        }
     });
 });
</script>
</code>

Der Zweck bestand darin, das Formular automatisch abzusenden, wenn der Benutzer die Eingabetaste drückte. Ich benutze Firefox regelmäßig, daher war alles in Ordnung für mich, bis ich es in Google Chrome und Internet Explorer getestet habe.

Wenn ich in späteren Browsern die Eingabetaste drückte, wurde das Formular manchmal zweimal gesendet. Dies war leicht zu bemerken, da ich doppelte Einträge in meiner Datenbank erhalten würde und zwei sehen würdePOSTs mit Fiddler.

Nach einigen Tests stellte ich fest, dass mein Problem der jQuery-Code war, da das Textfeld automatisch bei der Eingabe ohne diesen Code gesendet und bei Verwendung dieses Codes eine Sekunde erzeugt wurdePOST in einigen Browsern.

Meine Fragen sind:

Warum verhindern Browser den zweiten Formularbeitrag nicht auf intelligente Weise (wie es Firefox in meinen Tests getan hat)?

Sollte ich dieses Verhalten in allen gängigen Browsern auf allen Plattformen erwarten?

Gibt es eine Möglichkeit, diesen Code zu verbessern, sodass ich die Übermittlung mit JavaScript durchführe, aber das Formular nicht zweimal übermitteln lasse?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage