Franz
Cuando envío un formulario HTML con una casilla de verificación marcada que no tiene una definición definida explícitamente value
Chrome envía on
como un valor para ese campo.
¿Es ese el comportamiento estándar? ¿O qué puedo esperar de otros navegadores?
La especificación HTML 4.01 no especifica el valor de una casilla de verificación marcada. Simplemente lo refiere diciendo que está “activado”, pero esto es solo prosa y no dice cuál es el valor predeterminado. Pero también dice (bajo el descripción del input
elemento) que el value
el atributo es requerido en este caso.
Asi que <input type=checkbox name=foo>
tiene un comportamiento indefinido en cuanto al valor utilizado, aunque en la práctica los navegadores utilizan value=on
como predeterminado.
-
Según HTML 5, si el navegador accede al valor a través de DOM/IDL (o si el navegador crea el DOM y da acceso al valor, por ejemplo, a javascript), el comportamiento no es indefinido, sino definido. El valor es “
on
“entonces. Este detalle no se especificó en HMTL DOM en el pasado ya que IDL no especificó este caso tan detallado. En la práctica, mientras escribe, técnicamente siempre fue el caso, pero permaneció sin definir. stackoverflow.com/a/19094549/367456 – HTML válido en el pasado normalmente requería escribir ese atributo (por ejemplo, HTML 2.0), desde HTML 5 esto ya no es necesario.– hakré
30 de septiembre de 2013 a las 12:54
hakré
Estándar de vida HTML refleja esto: el valor está en el modo “predeterminado/activado”, lo que significa que su valor es “on
” si no se proporciona ningún atributo de valor. 4.10.7.1.16 Estado de la casilla de verificación (tipo=casilla de verificación) – HTML Living Standard (septiembre de 2013):
- El valor del atributo IDL está en modo predeterminado/activado.
[…]
predeterminado/activado
Al llegar, si el elemento tiene un
value
atributo, debe devolver el valor de ese atributo; de lo contrario, debe devolver la cadena “on
“. Al configurar, debe configurar el elementovalue
atribuir al nuevo valor.
Esto es igualmente parte de otra especificación HTML, el W3C HTML 5 de agosto de 2013 Recomendación Especificación tiene esto también:
- http://www.w3.org/TR/html5/forms.html#checkbox-state-(type=checkbox)
- http://www.w3.org/TR/html5/forms.html#dom-input-value-default-on
Para referencia a mi comentario anterior:
Firefox (septiembre de 2013), Chrome (septiembre de 2013), Internet Explorer (6): “activado”. Sospecho que esto se remonta a mucho tiempo atrás. http://lxr.mozilla.org/classic/source/lib/layout/layform.c#86 – como la mayoría de los navegadores necesitan tener algún valor predeterminado para sus propios objetos de código, supongo que este “encendido” es común.
techfoobar
Los navegadores enviarán el valor de una casilla de verificación (en los datos POST) solo si está marcada. Una verificación para ver si un valor (ningún valor) para una casilla de verificación en particular está presente en los datos POST es todo lo que necesita.
es decir
// no need to check against 'on', 'true', '1' etc..
if(post data contains a value for checkbox1) {
// checkbox 1 is checked
}
else {
// not checked
}
-
mencionado porque el valor real es irrelevante y no debe compararse idealmente.
– techfoobar
16 de octubre de 2012 a las 14:09
-
Incluso en 2012, las aplicaciones de una sola página eran una cosa, haciendo que su comentario no sea válido, no enviamos publicaciones de formulario reales de esta manera al navegador, queremos obtener el valor de la casilla de verificación a veces.
– Mathijs Seger
19 de diciembre de 2016 a las 8:10
¡Sí, es estándar! El valor comprobado será en en cada navegador
– Bhuvan Rikka
16 de octubre de 2012 a las 9:44
@BhuvanRikka: ¿Tiene alguna referencia?
– Francisco
16/10/2012 a las 12:40
Lo comprobé pero en vano. No pude encontrar ninguno. Solo digo por experiencia propia
– Bhuvan Rikka
16 de octubre de 2012 a las 12:42