Pregunta

Tengo un marcado similar al siguiente:

<select>
  <option selected="selected">Apple</option>
  <option selected="">Orange</option>
</select>

En este caso, "Naranja" se muestra como el elemento seleccionado. Hubiera esperado que dejar en blanco el atributo selected deshacería sus efectos. ¿Hay alguna forma de escribir esto sin dejar el atributo?

¿Fue útil?

Solución

Un navegador diferente puede tratar este atributo de manera diferente. De acuerdo con la documentación de MSDN (para Internet Explorer):

  

Para seleccionar un elemento en HTML, no es   necesario para establecer el valor de la   Atributo SELECCIONADO a verdadero. El mero   presencia del conjunto de atributos SELECCIONADO   su valor a verdadero.

En Firefox y Safari esto funciona:

<option selected='false' />

Por lo que puedo decir mirando el estándar oficial de WC3 para HTML4, el caso admitido es solo:

<option selected='selected' />

Tendrá que emitir selectivamente el atributo o usar javascript para controlar qué elemento se selecciona inicialmente.

Otros consejos

Especificaciones HTML5

https://www.w3.org /TR/html51/sec-forms.html#the-option-element

  

El atributo de contenido seleccionado es un atributo booleano.

http://www.w3.org/TR/html5 /infrastructure.html#boolean-attributes :

  

La presencia de un atributo booleano en un elemento representa el valor verdadero, y la ausencia del atributo representa el valor falso.

     

Si el atributo está presente, su valor debe ser la cadena vacía o un valor que no distinga entre mayúsculas y minúsculas ASCII para el nombre canónico del atributo, sin espacios en blanco iniciales o finales.

Conclusión

Los siguientes son válidos, equivalentes y verdaderos :

<option selected />
<option selected="" />
<option selected="selected" />
<option selected="SeLeCtEd" />

Los siguientes son inválidos :

<option selected="0" />
<option selected="1" />
<option selected="false" />
<option selected="true" />

La ausencia del atributo es la única sintaxis válida para false :

<option />

Recomendación

Si le interesa escribir XHTML válido, use selected = " selected " , ya que < option selected > no es válido y otras alternativas son menos legibles. De lo contrario, simplemente use la opción < seleccionada > ya que es más corta.

el único valor permitido para el atributo seleccionado en XHTML es " seleccionado " así que si desea que su marcado sea compatible con XHTML y funcione en todos los navegadores, dejarlo fuera es la única opción para que no se seleccione

No, la existencia del atributo seleccionado le dice al navegador que es el elemento seleccionado. Cualquier cosa dentro de las comillas se ignora.

Editar: lo que podría hacer (con Javascript) es buscar etiquetas de opción con selected = " " ;, y eliminar el atributo seleccionado de ellas.

En HTML (a diferencia de XHTML), un simple atributo seleccionado , sin ningún valor, funciona bien:

<option selected>Apple</option>
<option>Orange</option>

En XHTML (incluido XHTML5) necesita un valor, que también debe estar seleccionado :

<option selected="selected">Apple</option>
<option>Orange</option>

Esto también funciona bien en HTML.

Este es generalmente el caso de los valores booleanos en (X) HTML. La forma de establecerlos en falso es omitirlos por completo. Establecer valores de true y false puede funcionar, pero no es estándar.

Tenga en cuenta que para una lista de opciones, la primera se selecciona de forma predeterminada, por lo que esto no es necesario en este caso.

Según w3schools , debe configurarlo como: selected = " seleccionado " ;. Esto le indica qué opción se seleccionó inicialmente y le permite configurarla mediante script más adelante.

No hay ningún otro valor válido que no sea " seleccionado " para ese atributo ( http://www.w3schools.com/TAGS/att_option_selected.asp )

Es mejor configurar la propiedad selectElement.selectedIndex de Javascript o eliminar el atributo por completo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top