para - etiquetas de programacion html
En HTML, ¿qué debería pasar con un elemento de opción seleccionado e inhabilitado? (6)
¿Estamos descartando los menús desplegables ''en cambio'', o deberíamos seleccionar la opción "seleccionar ...", sin ningún efecto?
Los menús desplegables "en cambio" están mal vistos por tipos más obsesionados con las normas.
Normalmente haría una validación del lado del cliente. "Seleccione un elemento del menú desplegable". es decir
¿debería seleccionarse la opción "seleccionar ...", simplemente sin ningún efecto?
Entonces dije "Sí" a tu pregunta A o B. :/ ¡Lo siento!
En mi ejemplo específico, estoy tratando con un menú desplegable, por ejemplo:
<select name="foo" id="bar">
<option disabled="disabled" selected="selected">Select an item:</option>
<option>an item</option>
<option>another item</option>
</select>
Por supuesto, eso es bastante absurdo, pero me pregunto si se define algún comportamiento estricto. Opera rechaza efectivamente el atributo ''seleccionado'' y selecciona el siguiente elemento en la lista. Todos los demás navegadores parecen permitirlo, y permanece seleccionado.
Actualización: para aclarar, estoy específicamente interesado en la selección inicial. Estoy tratando con uno de esos ''Seleccionar un elemento:'' - tipo desplegables, en cuyo caso la primera opción es realmente una etiqueta, y se produce una acción en el cambio onchange()
. Esto está bastante bien ''progresivamente mejorado'', en que un botón de envío está presente, y solo se elimina mediante JavaScript. Si se elimina la opción "seleccionar ...", lo que sea que se convierta en el primer elemento no se podrá seleccionar. ¿Acabamos de descartar por completo los drop onchange
, o deberíamos seleccionar la opción "select ..." sin ningún efecto?
De acuerdo con la especificación HTML 4.01, el atributo disabled es un atributo estándar para el elemento option , pero el comportamiento probablemente sea indeterminado en función del estándar (lea la información sobre el elemento select y los elementos de opciones. Aquí hay una parte que creo que puede arrojar luz Los motivos de Opera para su implementación:
Cuando se establece, el atributo disabled tiene los siguientes efectos en un elemento:
* Los controles deshabilitados no reciben foco.
* Los controles deshabilitados se saltan en la navegación de tabulación.
* Los controles desactivados no pueden ser exitosos.
Por lo tanto, es muy probable que esta sea solo una de esas cosas en las que la especificación es lo suficientemente vaga como para permitir ambas interpretaciones. Este es el tipo de idiosincrasia que hace que programar para la web sea tan divertido y gratificante. :PAG
En respuesta a la actualización de la pregunta, diría que la opción ''etiqueta'' debe ser seleccionable pero que no haga nada en el envío o mediante JavaScript, no permita que se envíe el formulario sin que se seleccione un valor (suponiendo que sea un campo requerido).
Desde el punto de vista de la usabilidad, sugeriría hacer las dos cosas, de esa forma todas las bases están cubiertas.
Las especificaciones de HTML son un poco vagas (es decir, carecen por completo) con respecto a esta extraña combinación. Dicen que un elemento de formulario con el conjunto de atributos desactivado no debe ser exitoso, por lo que realmente no se puede seleccionar.
El navegador puede renderizarlo para que se vea seleccionado, pero no debería aparecer en los datos POST. Parece que Opera lo entendió bien.
Las especificaciones de HTML indican que tanto las opciones seleccionadas como las deshabilitadas son opciones disponibles para el elemento <option>
, pero no especifica lo que debería suceder en caso de conflicto. En la sección sobre controles desactivados , dice
Cuando se establece, el atributo disabled tiene los siguientes efectos en un elemento:
- Los controles deshabilitados no reciben foco.
- Los controles deshabilitados se saltan en la navegación de tabulación.
- Los controles deshabilitados no pueden ser exitosos.
también dice
Cómo se representan los elementos deshabilitados depende del agente de usuario. Por ejemplo, algunos agentes de usuario "desactivan" elementos de menú desactivados, etiquetas de botones, etc. En este ejemplo, el elemento ENTRADA está desactivado. Por lo tanto, no puede recibir la entrada del usuario ni su valor se presentará con el formulario.
Si bien este caso específico no se especifica, mi lectura de esto dice que la representación real de un elemento "seleccionado" "desactivado" se deja al navegador. Mientras el usuario no pueda seleccionarlo, está funcionando de manera estándar. Sí dice que un script puede actuar sobre el elemento, por lo que es posible que Javascript establezca una opción deshabilitada como seleccionada (o deshabilite una opción seleccionada). Esto no es contrario a los estándares, pero en la presentación del formulario, el valor de esa opción no podría ser el valor seleccionado. La lista de selección (supongo) debe tener un valor vacío en este caso.
desafortunadamente, realmente no importa lo que debería suceder, porque IE no admite el atributo disabled en el período de opciones.
http://webbugtrack.blogspot.com/2007/11/bug-293-cant-disable-options-in-ie.html