Firefox ignora la opción seleccionada= " seleccionada"


Si cambias un menú desplegable y actualizas la página, Firefox parece ignorar el atributo seleccionado.

<option selected="selected" value="Test">Test</option>

De hecho, seleccionará la opción que había seleccionado previamente (antes de la actualización). Esto termina siendo un problema para mí, ya que hay un evento activado en el menú desplegable que cambia otras cosas. ¿Hay alguna forma de hacer que Firefox detenga este comportamiento (aparte de disparar otro evento cuando se carga la página)?

Author: monkey-wrench, 2011-01-28

20 answers

AFAIK, este comportamiento está codificado en Firefox.

Puede intentar establecer cada elemento del formulario en su defaultValue al cargar la página.

 5
Author: Pekka 웃,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-28 18:47:08

Agrega autocomplete="off" atributo HTML a cada etiqueta select. (fuente: https://stackoverflow.com/a/8258154/260080)

Esto corrige el comportamiento EXTRAÑO en FireFox.

 229
Author: Marco Demaio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:59

En Firefox, he notado que el atributo "selected" no funcionará a menos que coloques el select dentro de un formulario, donde el formulario tiene un atributo name.

 55
Author: user1707970,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-29 07:44:25

Acaba de tener el mismo problema, créanme que ha sido más de 10 horas luchando con este comportamiento estúpido Firefox, tengo 7 desplegables, cada uno de ellos desencadenará un evento y rellenar 24 entradas ocultas, por lo que se puede imaginar tener la opción correcta seleccionada con 24 valores de entrada incorrectos!!! la solución que finalmente encontré es restablecer el formulario con Javascript añadiendo esta línea de código:

window.onload = function() { document.forms['MarkerForm'].reset(); };

PD: las entradas tienen los valores extraídos de una base de datos, por lo que restablecer el formulario no vacía ningún valor pero de alguna manera le dice a Firefox que regrese al infierno a selected=selected option!

 7
Author: Abdelkader Soudani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-09 02:02:33

Es solo Firefox recordando su selección anterior al actualizar. En su lugar, intente una actualización intensa.

También, el mismo problema aquí: https://stackoverflow.com/a/1505693/1069232

También vea aquí: https://bugzilla.mozilla.org/show_bug.cgi?id=274795

 5
Author: hammygoonan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:40

Estoy usando FF 25.0.1

Ignora selected="" y selected="selected".

Pero si simplemente intento selected la opción está seleccionada.

Comportamiento extraño (no conforme). Sé que selected es HTML5 válido y es el formulario más corto, pero suelo escribir código que también valida como XML bien formado, por lo que puedo usar cualquier herramienta de validación XML para verificar mis resultados de una manera muy estricta (y el intercambio de datos es muy fácil...)

De acuerdo con W3C, estas variantes deben ser válidas en booleano atributos:

HTML5:  boolAttr="" | boolAttr="boolAttr" | boolAttr
XHTML5: boolAttr="" | boolAttr="boolAttr"

Prefiero la primera, ya que es casi tan corta como la última variante (no conforme con xml), pero debería validarse como XHTML5 Y HTML5. Así que espero, Mozilla lo arreglará!

 3
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-17 13:24:30

Puedes llamar a .reset() en el formulario antes de actualizar la página.

 2
Author: Neil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-28 21:47:35

Uso .prop() en lugar de .attr ()

This does not work in firefox.
  $( 'option[value="myVal"]' ).attr( 'selected', 'selected' );
use this one
  $( 'option[value="myVal"]' ).prop( 'selected', 'selected' );

In other way
  $( this ).prop( 'selected', 'selected' );
 2
Author: Zaheer Babar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-12 12:21:03

Con el nombre es mejor = > >

form id="UMForm" name="UMForm" class="form"

El select tomará el atributo selected

 2
Author: snk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-27 05:34:35

Puede que sea un error en Mozilla, pero intenta darle un nombre al menú desplegable.

 1
Author: FourtyTwo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-13 19:54:10

Encierre el atributo select in form y funcionará.

<!-- will not work in firefox -->
<option selected="selected" value="Test">Test</option>

Y

<!-- this will work in firefox -->
<form>
 <option selected="selected" value="Test">Test</option>
</form>
 1
Author: Muhammad Tahir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-06 21:25:55

Autocompletar tampoco funcionaba para mí.

Esta es la corrección de javscript escrita en jquery que uso:

$('input[type="radio"][selected]').click();
 1
Author: Danny van der Knaap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-08 10:14:02
<option selected="selected" value="Test">Test</option>

En este caso esto funcionó tanto para Chrome como para Firefox.

$('option[value="Test"]').prop('selected', true);

Estaba usando .attr() en lugar de .prop()

 1
Author: AndreL,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-16 17:00:03

Para mostrar el primer elemento del menú desplegable, use ProjectName.ClearSelection();

Ponga líneas en su página de diseño para que funcione en todo el navegador y también ponga esto en el código detrás de la carga de la página.

$(document).ready(function () {
    $("#content_ProjectName option[value='1']").prop("selected", true);
});
 1
Author: Chinmaya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-18 16:45:36

Si cambias la selección y refrescas la página firefox restaurará tus cambios en el formulario, es por eso que sientes que la selección no está funcionando. En lugar de actualizar, intente abrir el enlace en una nueva pestaña.

 0
Author: Rodrigo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-28 18:53:42

Esta es mi solución:

var select = document.getElementById('my_select');
for(var i=0; i < select.options.length; i++){
    select.options[i].selected = select.options[i].attributes.selected != undefined;
}

Acabo de poner eso en la parte superior de la página (con el id apropiado establecido), y funciona para mí. Reemplazar el getElementById con un bucle sobre todas las selecciones de la página, lo dejo como un ejercicio para el lector ;).

 0
Author: Benubird,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-16 10:01:40

Para mí ninguna de las soluciones anteriores funcionó. Tuve que establecer explícitamente la selección si no había ninguna:

if (foo.find(':selected').length === 0) {
    $(foo.find('option')[0]).attr('selected', 'selected');
}

Desearía que firefox arreglara esto: (

 0
Author: boxed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-10 10:25:15

En el trabajo, acabo de corregir un error donde la opción de cuadro de selección se muestra correctamente en Chrome, pero no en Firefox, en la misma página web. Resultó ser algo completamente diferente a los problemas anteriores, pero podría ser un problema que está experimentando.

En Chrome, el color de la fuente del cuadro de selección era negro. Por alguna razón en Firefox, el cuadro de selección heredó el color de la fuente del contenedor, que era blanco. Una vez que agregué una regla CSS para forzar que se seleccione el color de la fuente del cuadro negro, el conjunto de valores se muestra correctamente.

 0
Author: Stefan Musarra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-21 18:26:53

Intenta desactivar el atributo autocomplete de select input ... a veces el navegador ignora select debido a eso

 0
Author: Arash Hatami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-12 16:59:33

Ni autocomplete="off" ni colocarlo dentro de un form funciona para mí.

Lo que funcionó fue usar solo el atributo selected sin "valor" así:

<option @(Model.Source == TermSource.Instagram ? "selected" : "")>
    Instagram
</option>
<option @(Model.Source == TermSource.Facebook ? "selected" : "")>
    Facebook
</option>

Así que o bien hace <option selected>...</option>, o simplemente <option>...</option>

 0
Author: uggeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-14 14:26:42