2010-01-29 18 views
5

Estoy usando algunos jquery para deshabilitar un botón de envío de formularios después de haber hecho clic para evitar clics repetidos accidentales. Esto funciona bien en todos los navegadores excepto en Firefox. En Firefox, si el usuario usa el botón Atrás del navegador para volver a una página luego de que se haya producido la desactivación del botón de enviar, el botón de enviar aún está desactivado. ¿Hay alguna solución a este problema?El botón de envío de formularios permanece deshabilitado cuando se usa el botón Atrás en Firefox

+1

Se puede publicar su código? – ryanulit

+1

Agregue un controlador de descarga vacío. La razón se discute en esta pregunta relacionada: [Evento de carga entre navegadores y botón Atrás] (http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406) – user240515

Respuesta

0

Si un navegador tiene el almacenamiento en caché desactivado, la página se volverá a cargar como si nada hubiera sucedido (no se hizo clic en ningún botón).

Si desea el lado del cliente, puede utilizar una cookie.

Ahora, si tiene una tecnología de servidor (PHP/Rails), puede poner el valor en la variable de sesión.

4
$(document).ready(function() { 
    $('input[type=submit]', this).attr('disabled', false); 

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

}); 

Al utilizar jQuery, esto no desactivará el botón al utilizar el botón de retroceso en el navegador. Probado en FF 3.5.

+0

En realidad esto no es correcto - $ (documento). Listo() no se disparará cuando se presiona el botón Atrás; ni tampoco ningún guión en línea. Lo mejor es usar el evento window.onpageshow, aunque si necesita soportar IE10 o menos, no tiene suerte. Más información aquí: https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris

+0

Un pequeño apéndice de mi comentario anterior: esto se aplica solo a los navegadores modernos, que almacenarán en caché toda la página (incluidas las ediciones realizadas mediante scripts). Por lo tanto, la respuesta anterior de Erik probablemente habría sido correcta en el momento en que se publicó, y seguirá funcionando en IE10 y en versiones anteriores, pero si encuentra esta respuesta en 2017 o después, tenga cuidado. – Chris

8

Probablemente, se debe añadir autocompletar = parámetro "off" a su forma

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

Es extraño para mí que Firefox considere el estado de un botón como parte de "autocompletar" ... pero de todos modos, gracias por la solución limpia. Por cierto, esto ocurre no solo al volver con el navegador, sino al intercambiar una nueva versión del formulario a través de Ajax. – lawrence

+0

Diría que esta respuesta debe ser aceptada. –

+1

No funciona para mí (Firefox 54) –

Cuestiones relacionadas