HTML: valor predeterminado de la casilla de verificación

3 minutos de lectura

Avatar de usuario de Franz
Franz

Cuando envío un formulario HTML con una casilla de verificación marcada que no tiene una definición definida explícitamente valueChrome envía on como un valor para ese campo.

¿Es ese el comportamiento estándar? ¿O qué puedo esperar de otros navegadores?

  • ¡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

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

avatar de usuario de hakre
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):

[…]

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 elemento value 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:


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.

avatar de usuario de techfoobar
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

¿Ha sido útil esta solución?