2012-05-31 25 views
33

He visto las tres implementaciones de preseleccionar una casilla de verificación. Comencé usando checked = "checked" porque pensé que era la manera "correcta" (nunca me gustó el "checked" = "yes"). Estoy pensando en cambiar a checked = "true", ya que parece más legible y es más fácil codificar el JavaScript. Tenga en cuenta que esta misma pregunta se aplica a otros atributos como "disabled" = "disabled" versus "disabled" = "true". Siempre que sea consecuente, ¿está usando "verdadero" el enfoque preferido? Graciascheckbox true o checked o yes

<input type="checkbox" checked="checked" value="123" name="howdy" /> 
<input type="checkbox" checked="true" value="123" name="howdy" /> 
<input type="checkbox" checked="yes"  value="123" name="howdy" /> 
+0

¿Qué hay de $ ('input [name = foo]'). attr ('verificado', verdadero);? ¿Debería ser realmente $ ('input [name = foo]'). Attr ('checked', 'checked')? – user1032531

Respuesta

55

Sólo checked y checked="checked" son válidas. Sus otras opciones dependen de la recuperación de errores en los navegadores.

checked="yes"checked="true" y son particularmente malo, ya que implican que checked="no" y checked="false" fijará el estado por defecto para ser sin control ... que no lo hará.

+4

[especificación de HTML 5] (http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attribute). –

+0

Lo siento, quería agregarlo aquí ... ¿Qué hay de $ ('input [name = foo]'). Attr ('checked', true) ;? ¿Debería ser realmente $ ('input [name = foo]'). Attr ('checked', 'checked')? – user1032531

+0

Debe ser 'jQuery (selector) .prop ('checked', true);' ('attr' no es coherente con la forma en que maneja el atributo checked, por lo que debe evitarse por el bien de los cerebros de los mantenedores). – Quentin

3

De acuerdo con W3C, el atributo de la entrada marcada puede estar ausente/omitido o "marcado" como su valor. Esto no invalida otros valores porque no hay restricciones a la implementación del navegador para permitir valores como "verdadero", "encendido", "sí", etc. Para garantizar que va a escribir una casilla de verificación/radio entre navegadores, marque checked = "checked", como lo recomienda el W3C.

los atributos de entrada deshabilitada, solo lectura e ismap van del mismo modo.

EDITADO

vacío no es un valor válido para los atributos comprobado, personas con discapacidad, de sólo lectura y ismap de entrada, tal como advierte @Quentin

+0

No. Dice que el atributo comprobado puede omitirse o puede tener el valor "marcado". Eso invalida cualquier otro valor (HTML solo le permite usar cosas que están permitidas, no le permite usar todo lo que no está prohibido). Como es un atributo booleano, puede omitir todo * excepto * el valor mientras tiene el atributo presente. es decir, dado 'checked =" checked "' puede confirmar los primeros 9 caracteres y el último carácter). – Quentin

+0

Dije que esto no invalida otros valores porque los navegadores ** pueden implementar su manera de analizar html como lo deseen, ya que aceptan un atributo omitido/ausente comprobado o checked = "checked" como ** recomendado ** por W3C . Acepto la negativation 'casue' empty 'no es un valor válido, pero todo lo demás sigue siendo válido. –

Cuestiones relacionadas