2011-11-02 18 views
5

En Firefox 7.0.1, tengo dos casillas de verificación y varias otras entradas.Firefox recordando incorrectamente los botones de radio

Cuando agrego otra entrada a través de jQuery Firefox no recuerda correctamente qué entradas de radio se han seleccionado.

Por ejemplo, si selecciono el primer botón de opción y luego actualizo la página, se selecciona el segundo botón de opción en lugar del primero y si actualizo de nuevo no se selecciona ningún botón de opción.

Usted debe ser capaz de copiar y pegar el siguiente código en un archivo nuevo para probar por sí mismos:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
    <script> 
    $(document).ready(function(){ 
    $('select').after('<input class="select" type="text" name="new_text_input" />'); 
}); 
    </script> 
    <title>Pretty jQuery Form</title> 
</head> 
<body> 
<form> 
    <fieldset> 
     <label>Select Box</label> 
     <select name="my_select"> 
      <option>Option 1</option> 
      <option>Option 2</option> 
      <option>Option 3</option> 
      <option>Option 4</option> 
     </select> 
    </fieldset> 
    <fieldset> 
     <label>Text Input</label> 
     <input class="text" id="text_input" name="input" type="text" /> 
    </fieldset> 
    <fieldset> 
     <label>Text Area</label> 
     <textarea></textarea> 
    </fieldset> 
    <fieldset> 
     <label>Radio</label> 
     <input value="1" name="radio" id="radio1" type="radio" /> <label for="radio1">Radio 1</label> 
     <input value="2" name="radio" id="radio2" type="radio" /> <label for="radio2">Radio 2</label> 
    </fieldset> 
</form> 
</body> 
</html> 

deben tener en cuenta que lo que en realidad estoy tratando de hacer es más complicado, pero después de muchas horas de depuración he logrado reducirlo a esto.

+0

¿Quieres decir después de enviar el formulario o simplemente ¿recarga la página? No creo que ningún navegador reclame oficialmente recordar la entrada del usuario si simplemente actualiza antes de completar un formulario y enviarlo. –

+0

Tengo la sensación de que Firefox lo hace, o al menos solía hacerlo. Sin embargo, todavía hay un problema aquí con la forma en que se controlan diferentes botones de radio en cada actualización. – robjbrain

+0

Por oficialmente quiero decir que dada la maleabilidad de DOM a través de JS, los índices esperados pueden no estar presentes y se deja a la interpretación. Existe la posibilidad de que su llamada memoria se basara en una posición numérica básica en el dom y debido a esta inserción inesperada está aplicando erróneamente. Por lo tanto, para usted, puede ser necesario ir tan lejos como para establecer una cookie js que contenga el estado de su formulario esperado y aplicarlo en su llamada a document.ready. –

Respuesta

14

Hay un artículo sobre este tema: http://www.ryancramer.com/journal/entries/radio_buttons_firefox/

El error se informó por primera vez hace de cinco años: https://bugzilla.mozilla.org/show_bug.cgi?id=394782

Solución:

<form autocomplete="off"> 

O usando jQuery:

$(document).ready(function() { 
    if ($.browser.mozilla) $("form").attr("autocomplete", "off"); 
}); 

También es posible evitar el problema con solo colocar autocomplete = "off" en los botones de radio a sí mismos (de esta manera usted todavía puede obtener autocompletar para los otros campos de formulario).

+2

Acabo de toparme con este problema con un grupo de botones de radio y Firefox seleccionando el primero a pesar de que el tercer botón de radio tiene propiedad 'checked'. Chrome e IE muestran correctamente el tercer botón como seleccionado. Agregué el 'autocomplete =' apagado '' sugerido a cada uno de los botones de radio en el grupo y ahora Firefox muestra correctamente el tercer botón de radio seleccionado. – toyNN

0

Parece que no hay una respuesta a este problema, todavía asumir que es un error en Firefox, pero me quedo sin un punto del

+0

Publiqué una solución que funcionaba para Firefox 38.0.5: http: // stackoverflow.com/questions/7876384/radio-boxes-not-resetting-to-checked-status-in-firefox/30946161 # 30946161 Era un error ligeramente diferente donde el valor predeterminado no se controlaba en absoluto, pero garantiza su La página carga el valor predeterminado (o el valor guardado del lado del servidor inyectado) cuando se carga la página. –

1

La entrada de radio que se debe comprobar mantiene el atributo checked="checked", por lo que en busca de ese elemento de entrada y comprobar manualmente lo arreglen este problema para mí:

$('input[type="radio"][checked="checked"]').prop('checked', true);

Cuestiones relacionadas