65 votos

Bug con Firefox - Atributo desactivado de entrada no se reinicia al actualizar

He encontrado lo que creo que es un error en Firefox y me pregunto si esto es realmente un error, así como cualquier solución para esto.

Si creas una página web básica con la siguiente fuente:

<html>
  <head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
  </head>
  <body>
    <div>
      <input id="txtTest" type="text" />
      <input type="button" onclick="$('#txtTest').attr('disabled','disabled');" value="Set Disabled (jQuery)" />
      <input type="button" onclick="document.getElementById('txtTest').disabled = true;" value="Set Disabled (js)" />
      <input type="button" onclick="$('#txtTest').removeAttr('disabled');" value="Remove Disabled" />
    </div>
  </body>
</html>

Si deshabilita el cuadro de texto dinámicamente y luego actualiza la página, el cuadro de texto permanecerá deshabilitado en lugar de volver a su estado original de no deshabilitado. He probado esto en IE8 y Chrome y se comportan como yo esperaba, restableciendo el cuadro de texto de nuevo a no deshabilitado cuando actualizo.

Otro dato interesante es que sigue haciendo lo mismo si la entrada es una casilla de verificación en lugar de un cuadro de texto.

83voto

Stephen Mesa Puntos 1450

Esto es un "característica" de Firefox que recuerda los valores de entrada de la forma a través de actualizaciones de página. Para arreglar este comportamiento, simplemente establece autocomplete="off" en el formulario que contiene las entradas, o simplemente directamente a la entrada.

Esto impide que el autocompletado funcione y evita que el navegador recuerde el estado de los campos de entrada.

Alternativamente, puede "refrescar" haciendo clic en CTRL+F5. Esto restablecerá completamente la página actual.

1voto

Joshua Fox Puntos 4505

Para tratar con el botón de regreso, haz esto (de aquí )

    window.addEventListener('pageshow', PageShowHandler, false);
    window.addEventListener('unload', UnloadHandler, false);

    function PageShowHandler() {
        window.addEventListener('unload', UnloadHandler, false);
    }

    function UnloadHandler() {
        //enable button here
        window.removeEventListener('unload', UnloadHandler, false);
    }

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X