2012-02-20 12 views
13

Quiero utilizar la propiedad indeterminada de una casilla de verificación. Cambiar el valor en JavaScript funciona en todo tipo de navegadores (¡incluso en MSIE6!), Sin embargo, no puedo establecer el valor inicial a través de atributos HTML en any.HTML - ¿Por qué no se respeta indeterminado = "indeterminado | verdadero"?

¿Esto es por diseño? Si es así, ¿por qué? En el lado del servidor, puedo determinar que es indeterminado. Entonces, ¿por qué no puedo decirle al navegador? ¿Los proveedores de navegadores no estaban preocupados por los FOUC (Flashes Of Unstyled Content) si un script de larga duración mantiene la configuración de la propiedad?

Aquí está un ejemplo de trabajo: http://jsfiddle.net/KUQC9/1/

+0

¿Cuál es la propiedad 'indeterminate'? –

+0

@Rocket, mira el ejemplo de trabajo. –

+1

Estoy aprendiendo sobre esto ahora. Tengo una pregunta para ti, en realidad ... dijiste que puedes determinar que es indeterminado en el servidor: ¿cómo lo haces? (Por cierto, podría evitar en gran medida los FOUC mediante el uso del evento de carga DOM en lugar de un tiempo de espera - http://jsfiddle.net/Cd35L/ - o incluso antes - http://jsfiddle.net/dV3uL/) –

Respuesta

9

No se puede hacer una indeterminada casilla de verificación a través de HTML por diseño. Consulte este artículo en css-tricks.com, que trata el tema en profundidad.

En cuanto al "por qué" parte de su pregunta, hay algo de información sobre las listas de correo del W3C que pueden ser útiles:

  • Parece como si la idea de dar casillas de verificación un valor de tres estados (aparentemente se selecciona, controla, indeterminada) fue considerado, pero no se han aplicado debido a problemas de compatibilidad con versiones anteriores
  • La única mención de un atributo cierto indeterminate HTML "contenido", como lo demuestra en su ejemplo, que pude encontrar fue aquí:

por lo que vale la pena, no hay de hecho un selector CSS :indeterminate (parece ser tratado como otros CSS pseudo-clases como :visited, que tampoco se puede establecer a través de HTML directamente, por lo que quizás esa sea otra razón por la cual indeterminate tampoco puede ser). En su demostración del selector de CSS, el W3C utiliza el mismo enfoque que usted: W3C indeterminate CSS selector demo. En vista de eso, diría que está utilizando el mejor método disponible para establecer el estado indeterminado de una casilla de verificación

+2

El artículo o sus comentarios realmente discuten el por qué. –

+0

@ Olson.dev: Agregué un poco de información de las listas de correo del W3C; vea mis ediciones. Espero que tenga algún valor para ti, ¡buena suerte! –

+0

gracias. Encontré esos enlaces útiles con respecto al "por qué" y he marcado su respuesta aceptada. También +1. –

3

Es por diseño. La única forma de HTML para indicar el estado de la casilla de verificación es a través del atributo marcado; esto se debe a que checkbox está destinado a verdadero/falso, en lugar de verdadero/falso/desconocido. Marcar algo indeterminado se puede hacer a través de Javascript, pero no cambiará el valor real/sumbitted de la casilla de verificación.

Si realmente desea inicializar las casillas de verificación para indeterminado, tendrá que hacerlo con Javascript (Me imagino en el evento de carga).

+0

Gracias por la respuesta. Sin embargo, no me dijiste mucho más de lo que especifiqué en la pregunta. Cuyo diseño? ¿Por qué es así? Entiendo que debe ser verdadero/falso pero no desconocido, por lo que propuse 2 atributos separados (solo cómo las propiedades están separadas). Además, mi ejemplo de trabajo ya muestra cómo inicializarlos a través de JavaScript. –

+0

Es el diseño de w3c (http://w3.org), el cuerpo que formalmente reconoce/codifica/diseña HTML. HTML (y XHTML y, para el caso, XML) son idiomas de documentos, en lugar de lenguajes de programación. Si el propósito dentro del documento de una casilla de verificación es designar una opción que debe ser verdadera o falsa, qué propósito tendría un atributo que describa ese valor verdadero/falso como servicio desconocido. – devstruck

+1

Hijo de a. . . de acuerdo con el borrador de HTML5 del w3c del 16 de febrero de 2012, indeterminado es un atributo del elemento de entrada. http://dev.w3.org/html5/spec/the-input-element.html#dom-input-indeterminate No se puede establecer inicialmente (en verdadero). – devstruck

Cuestiones relacionadas