jquery - tiene - ¿Cuál es la sintaxis de los atributos booleanos, por ejemplo, una casilla marcada, en HTML?
obtener el valor de un elemento html con jquery (9)
La especificación W3C parece implicar que solo el attr marcado allí es correcto. ¿Eso significa que checked = "false" y checked = "no" seguirá marcando la casilla?
Exactamente. Es por eso que es una mala idea usar checked="true"
y checked="yes"
, implican que checked="false"
y checked="no"
no marcarán la casilla.
Suena como una pregunta tonta, pero me pregunto cuál es la mejor manera de indicar que una casilla de verificación está marcada / desmarcada en HTML.
He visto muchos ejemplos diferentes:
<input type="checkbox" checked="checked" />
<input type="checkbox" />
<input type="checkbox" checked="yes" />
<input type="checkbox" checked="no" />
<input type="checkbox" checked="true" />
<input type="checkbox" checked="false" />
¿Qué navegadores funcionan con cuáles de estos, y lo más importante, jQuery averigua qué casilla está marcada en los 3?
Editar: La especificación W3C parece implicar que solo el attr marcado allí es correcto. ¿Eso significa que checked = "false" y checked = "no" seguirá marcando la casilla?
De acuerdo con las recomendaciones del W3C, su primera sugerencia es correcta.
De acuerdo con las especificaciones HTML , la correcta es:
<input type="checkbox" checked />
<input type="checkbox" />
Yo uso esto y jQuery funciona perfectamente con ellos.
En HTML:
<input type="checkbox" checked>
<input type="checkbox" checked="checked">
Para XHTML debes usar pares de correspondencia de atributo / valor:
<input type="checkbox" checked="checked" />
La presencia de la propiedad "marcada" especifica el estado. El valor es irrelevante / no es necesario.
<input type="checkbox" checked="checked" />
<input type="checkbox" />
es mi sugerencia
Tendría cuidado de usarlo en Chrome, Firefox y Opera. Chorme parece tener un problema con las casillas de verificación que aparecen, Firefox distingue entre mayúsculas y minúsculas con los estilos y las etiquetas, y la ópera parece funcionar bien, pero tarda en actualizarse. Podría ser simplemente las versiones de los navegadores que se utilizan.
Aparte de eso, creo que debería ejecutar <input type="checkbox" checked />
bien en todos ellos. La única diferencia realmente es cómo aparecen los navegadores individuales para mostrar el contenido de la página.
Una prueba rápida revela que jQuery iguala cualquier valor establecido para ser verificado.
alert( $(''input:checked'').length );
// Returns 5
Incluso una cadena vacía y los valores negativos.
Especificación de HTML5 :
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 es una coincidencia ASCII insensible a mayúsculas y minúsculas para el nombre canónico del atributo, sin espacios en blanco iniciales o finales.
Conclusión
Deje que boolean
sea un atributo booleano de tag tag
, como checked
y <input type="checkbox"
.
Los siguientes son válidos, equivalentes y verdaderos :
<tag boolean />
<tag boolean="" />
<tag boolean="boolean" />
<tag boolean="BoOlEaN" />
Los siguientes son inválidos :
<tag boolean="0" />
<tag boolean="1" />
<tag boolean="false" />
<tag boolean="true" />
La ausencia del atributo es la única sintaxis válida para falso :
<tag />
Recomendación
Si le importa escribir XHTML válido, use boolean="boolean"
, ya que <tag boolean>
no es válido XHTML (pero HTML válido) y otras alternativas son menos legibles. De lo contrario, simplemente use <tag boolean>
ya que es más corto.
HTML:
Cualquiera de ellos debería ser el correcto, como dicen en la página W3C . checked
atributo checked
solo tiene que establecerse.
Como escribí en el comentario de Coronatus:
De hecho, no importa si está marcado, marcado = "lo que sea" o marcado = "verificado". Está comprobando el valor booleano, por lo que es verdadero (conjunto) o falso (no establecido).
XHTML:
Tienes que especificarlo, por lo que checked="checked"
es el único válido. La mayoría de los navegadores probablemente analizará correctamente los valores de HTML, pero de todos modos tendrá un error en su página.