Sto utilizzando alcuni jquery per disabilitare un pulsante di invio modulo dopo che è stato premuto per evitare clic ripetuti accidentale. Funziona bene in tutti i browser ad eccezione di Firefox. In Firefox se l'utente utilizza il pulsante Indietro del browser per tornare a una pagina dopo che si è verificata la disattivazione del pulsante di invio, il pulsante di invio è ancora disattivato. C'è qualche soluzione a questo problema?Pulsante di invio modulo rimane disattivato quando si utilizza il pulsante Indietro in Firefox
risposta
Se un browser ha disabilitato la cache, la pagina verrà ricaricata come se nulla fosse accaduto (nessun pulsante è stato premuto).
Se si desidera il lato client, è possibile utilizzare un cookie.
Ora, se si dispone di una tecnologia lato server (PHP/Rails), è possibile inserire il valore nella variabile di sessione.
$(document).ready(function() {
$('input[type=submit]', this).attr('disabled', false);
$('#myform').submit(function(){
$('input[type=submit]', this).attr('disabled', true);
});
});
Utilizzando jQuery, questo renderà il pulsante non disattivato quando si utilizza il pulsante Indietro sul browser. Testato su FF 3.5.
In realtà questo non è corretto - $ (document) .ready() non si attiva quando si preme il pulsante Indietro; né alcun script in linea. È meglio usare l'evento window.onpageshow, anche se se hai bisogno di supportare IE10 o meno, sei sfortunato. Ulteriori informazioni qui: https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris
Un breve addendum al mio commento sopra: questo vale solo ai browser moderni, che memorizzeranno nella cache l'intera pagina (comprese le eventuali modifiche apportate dallo scripting). Quindi, la risposta di Erik di cui sopra sarebbe probabilmente stata corretta al momento della pubblicazione - e funzionerà ancora in IE10 e sotto - ma se trovi questa risposta nel 2017 o dopo, fai attenzione. – Chris
Probabilmente, è necessario aggiungere autocomplete = parametro "off" per il modulo
<form autocomplete="off">
<input type="submit" />
</form>
È strano per me che Firefox consideri lo stato di un pulsante parte di "completamento automatico" ... ma comunque, grazie per la soluzione pulita. A proposito, questo accade non solo quando si torna indietro con il browser, ma quando si cambia una nuova versione del modulo tramite Ajax. – lawrence
Direi che questa risposta dovrebbe essere accettata. –
Non funziona per me (Firefox 54) –
potete inserire il tuo codice? – ryanulit
Aggiungere un gestore di scarico vuoto. Il motivo è discusso in questa domanda correlata: [Evento onload cross-browser e pulsante Indietro] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406) – user240515