html - off - Error con Firefox-Atributo desactivado de entrada no se restablece al actualizar
formulario html (3)
He encontrado lo que creo que es un error con Firefox y me pregunto si esto realmente es un error, así como cualquier solución para esto.
Si crea 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 disable
el textbox
dinámicamente y luego actualiza la página, el textbox
permanecerá desactivado en lugar de restablecer a su estado original de no desactivado. Lo intenté en IE8 y Chrome, y estos se comportan como era de esperar, reiniciando el textbox
a no desactivado cuando actualizo.
Otra información interesante es que todavía hace lo mismo si la entrada es una checkbox
de checkbox
lugar de un textbox
de textbox
.
Como se mencionó anteriormente, necesita agregar autocomplete="off"
a sus botones.
Aquí hay un fragmento sh
+ perl
para automatizar esto en el caso de <button>
s en sus archivos / plantillas HTML (bajo algunas suposiciones):
find /path/to/html/templates -type f -name ''*.html'' -exec perl -pi -e /
''s/(?<=<button )(.*?)(?=>)/@{[(index($1,"autocomplete=")!=-1?"$1":"$1 autocomplete=/"off/"")]}/g'' /
{} +
Las suposiciones son:
Las etiquetas
<button>
apertura comienzan y terminan en la misma línea. Si este no es el caso (es decir, podrían dividirse en varias líneas), reemplazar/g
con/gs
debería ser de ayuda (el modificadors
causa que coincida con las líneas nuevas también)HTML válido (p. Ej., No hay caracteres divertidos entre
<
y>
) y ningún resto mayor de (>
) dentro de la etiqueta de apertura.
Esta es una "característica" de Firefox que recuerda los valores de entrada del formulario a través de actualizaciones de página. Para corregir este comportamiento, simplemente configure autocomplete="off"
en el formulario que contiene las entradas, o simplemente directamente a la entrada.
Esto evita que el autocompletado funcione y evita que el navegador recuerde el estado de los campos de entrada.
De forma alternativa, puede simplemente "actualizar duro" haciendo clic en CTRL + F5. Esto restablecerá completamente la página actual.
Para lidiar con el botón Atrás, haz esto (desde here )
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);
}