2 Stimmen

Warum wird mein Formular nicht gesendet, wenn ich das Senden nach dem ersten Klick deaktiviere?

Ich versuche, die Schaltfläche "Absenden" in einem Formular zu deaktivieren, so dass es nicht erneut gesendet wird, wenn der Benutzer zweimal darauf klickt. Ich weiß, es gibt bereits ein paar Fragen hier, dass Adresse, aber die angebotenen Lösungen scheinen nicht zu funktionieren.

Ich verwende die hier angebotene Lösung: Schaltfläche "Abschicken" bei Formularübermittlung deaktivieren

Hier ist mein jQuery:

$('form#proof_form').submit(function(){
    $(this).children('input[type=submit]').attr('disabled', 'disabled');
});

Nachdem die Schaltfläche "Submit" gedrückt wurde, soll ein gespeicherter Wert in eine DB eingegeben und dann zu einer anderen Seite weitergeleitet werden. Stattdessen wird jetzt die aktuelle Seite neu geladen, ohne dass eine Weiterleitung erfolgt. Ich habe ein Testecho direkt nach dem Drücken des Submit-Buttons durch den Benutzer eingefügt, und es funktioniert nicht. Auch der Wert ist nicht mehr Posting an die DB, so dass ich weiß, es ist die Deaktivierung der Schaltfläche "Senden", bevor es an die DB und Weiterleitung senden kann.

Hier ist mein php:

if(isset($_POST['accept_proof'])){
    echo 'The form was submitted!';
    $sql = 'INSERT into orders SET
          name = "' . $_SESSION['name'] . '"';
    $conn->query($sql) or die($conn->error);
}

Warum wird die Schaltfläche nach dem ersten Klick nicht übermittelt?

2voto

Paul Calcraft Punkte 913

Deaktivierte HTML-Formularelemente werden nicht übermittelt .

Ich vermute, dass "accept_proof" der Name Ihrer Übermittlungsschaltfläche ist. Da sie deaktiviert wird, bevor das Formular übermittelt wird, wird ihr Wert nicht im POST an den Server festgelegt; isset($_POST['accept_proof']) gibt false zurück, und Ihr Code innerhalb der if wird nicht ausgeführt.

Sie müssen auf andere Weise nach dem POSTed-Formular suchen, z. B. isset() auf ein anderes Feld des Formulars.

1voto

Timon. Z Punkte 681

Sie haben das "return false;" vergessen.

Versuchen Sie stattdessen dies:

$('form#proof_form').submit(function(){
    $(this).children('input[type=submit]').attr('disabled', 'disabled');
    return false;
});

Das funktioniert bei mir. http://jsfiddle.net/5S72w/2/

0voto

Wenn dieselbe Seite aktualisiert wird, haben Sie wohl vergessen, Ihre form 's action Attribut. Sie sollten dies haben:

<form action="your_action" ...> 
  ... 
</form>

Ich hoffe, das hilft. Prost

0voto

junEcho Punkte 1

Ich hänge schon den ganzen Tag an diesem Thema. Meine Version der Schaltfläche "Submit" ruft eine Validierungsfunktion auf onclick und deaktiviert dann die Schaltfläche am Ende der Validierung. Das Problem, das ich hatte, war, dass, da die Schaltfläche deaktiviert ist und die Aktion des Formulars nicht das ist, was ich brauche, die Schaltfläche das Formular nicht übermittelt, sobald sie deaktiviert ist.

Nach stundenlanger Suche im Internet fand ich heraus, dass ich nur das Formular aufrufen musste. submit() Funktion nach der Deaktivierung, um das Formular abzuschicken.

Wenn der Name meines Formulars also lautet myform

dann rufe ich myform.submit() nach der Deaktivierung.

Ich hoffe, das hilft

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X