Formularübertragung verhindern (Javascript)

7

Ich habe ein Formular mit einer Texteingabe:

%Vor%

Ich möchte nur, dass es in bestimmten Fällen eingereicht wird. (Ich führe zuerst eine Fehlerüberprüfung durch)

%Vor%

Das Problem ist: Obwohl die Warnung fehlerfrei ausgelöst wird, wird das Formular dennoch übermittelt (es gibt keine anderen Anweisungen zum Senden als die eine!).

Vielen Dank, wenn jemand etwas dazu sagen kann. . .

    
SlimJim 16.06.2014, 16:52
quelle

3 Antworten

20

Es gibt einen grundlegenden Fehler bei diesem Ansatz. Sie sagen dem Formular gerade, dass wenn text1 sich ändert, dann someFunc() aufrufen. Wenn dies der Fall ist, verwenden Sie JavaScript, um das Formular zu senden. Wenn es falsch ist, machen Sie weiter mit Ihrem Geschäft. Wenn Sie in der Texteingabe die Eingabetaste drücken, wird das Formular noch übergeben. Wenn eine Schaltfläche zum Absenden vorhanden ist, die angeklickt wird, wird das Formular trotzdem übermittelt.

Der grundlegende Weg, um dies zu erreichen, ist wie folgt:

%Vor%

Wenn das Von übermittelt wird, rufen Sie someFunc() auf. Diese Funktion muss entweder true oder false zurückgeben. Wenn es wahr zurückgibt, wird das Formular übergeben. Wenn false, tut das Formular nichts.

Jetzt braucht Ihr JavaScript eine kleine Änderung:

%Vor%

Sie können immer noch andere Funktionen aufrufen, wenn ein Feld geändert wird, aber sie werden die endgültige Einreichung des Formulars immer noch nicht verwalten. In der Tat könnte someFunc() die anderen Funktionen aufrufen, um eine abschließende Prüfung durchzuführen, bevor wahr oder falsch zum onsubmit-Ereignis zurückgegeben wird.

BEARBEITEN: Dokumentation zur impliziten Formularübermittlung.

EDIT 2:

Dieser Code:

%Vor%

stoppt die Standardverarbeitung für das change -Ereignis, das diesem Element zugeordnet ist. Wenn Sie das Ereignis submit beeinflussen möchten, tun Sie Folgendes:

%Vor%

Was würde Ihnen erlauben, so etwas zu tun:

%Vor%     
Adrian J. Moreno 16.06.2014, 17:55
quelle
1
%Vor%     
samadadi 21.10.2015 17:13
quelle
0

Verwenden Sie den folgenden Code, es funktioniert einwandfrei

%Vor%     
gaurav 05.12.2016 07:49
quelle

Tags und Links