2010-01-29 8 views
5

Ich benutze eine jquery, um eine Schaltfläche zum Senden von Formularen zu deaktivieren, nachdem sie angeklickt wurde, um versehentliches wiederholtes Klicken zu verhindern. Dies funktioniert in allen Browsern außer Firefox. Wenn der Benutzer in Firefox die Zurück-Schaltfläche des Browsers verwendet, um nach dem Deaktivieren der Übergabeschaltfläche zu einer Seite zurückzukehren, ist die Übergabeschaltfläche weiterhin deaktiviert. Gibt es eine Lösung für dieses Problem?Schaltfläche zum Senden von Formularen bleibt deaktiviert, wenn die Schaltfläche Zurück in Firefox verwendet wird

+1

Können Sie nach Ihren Code hinzufügen? – ryanulit

+1

Fügen Sie einen leeren Entlade-Handler hinzu. Der Grund wird in dieser verwandten Frage diskutiert: [Browserübergreifendes Onload-Ereignis und die Schaltfläche Zurück] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406) – user240515

Antwort

0

Wenn im Browser die Zwischenspeicherung deaktiviert ist, wird die Seite neu geladen, als ob nichts passiert wäre (keine Schaltfläche angeklickt).

Wenn Sie clientseitig möchten, können Sie einen Cookie verwenden.

Nun, wenn Sie eine serverseitige Technologie (PHP/Rails) haben, dann könnten Sie den Wert in die Session-Variable setzen.

4

Mit jQuery wird die Schaltfläche bei Verwendung der Zurück-Schaltfläche im Browser nicht deaktiviert. Getestet auf FF 3.5.

+0

Eigentlich ist das nicht korrekt - $ (Dokument) .ready() wird nicht ausgelöst, wenn die Zurück-Taste gedrückt wird; noch werden irgendwelche Inline-Skripte. Es ist am besten, das window.onpageshow-Ereignis zu verwenden, obwohl Sie, wenn Sie IE10 oder darunter unterstützen müssen, kein Glück haben. Mehr Infos hier: https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris

+0

Ein kurzer Anhang zu meinem Kommentar oben: das gilt nur für moderne Browser, die die gesamte Seite zwischenspeichern (einschließlich aller Änderungen, die durch Skripting vorgenommen werden). Also, Eriks Antwort oben wäre wahrscheinlich zum Zeitpunkt der Veröffentlichung korrekt gewesen - und es funktioniert auch in IE10 und darunter - aber wenn Sie diese Antwort im Jahr 2017 oder später finden, dann seien Sie vorsichtig. – Chris

8

Wahrscheinlich, sollten Sie die automatische Vervollständigung = "off" Parameter auf dem Formular

<form autocomplete="off"> 
    <input type="submit" /> 
</form> 
+0

Es ist seltsam für mich, dass Firefox den Status eines Knopfes Teil von "Autocomplete" betrachtet ... aber trotzdem, danke für die saubere Lösung. Übrigens, das passiert nicht nur beim Zurückgehen mit dem Browser, sondern beim Austausch einer neuen Version des Formulars über Ajax. – lawrence

+0

Ich würde sagen, diese Antwort sollte akzeptiert werden. –

+1

Funktioniert nicht für mich (Firefox 54) –