Acerca de este problema HTML
En HTML, los atributos booleanos funcionan de manera diferente a lo que podrías esperar de los lenguajes de programación. La presencia de un atributo booleano en un elemento representa el valor true, y su ausencia representa false. No los estableces como "true" o "false" como harías en JavaScript u otros lenguajes. Según la especificación HTML de WHATWG, un atributo booleano tiene exactamente tres formas válidas:
-
Solo el nombre del atributo (ej.,
multiple) -
El atributo con un valor vacío (ej.,
multiple="") -
El atributo con un valor que coincida con su propio nombre, sin distinguir mayúsculas (ej.,
multiple="multiple")
Establecer multiple="true" es inválido porque "true" no es uno de los valores permitidos. Aunque los navegadores son tolerantes y típicamente seguirán tratando el atributo como presente (efectivamente habilitándolo), esto produce un error de validación W3C y no se ajusta al estándar HTML. Depender de la tolerancia del navegador lleva a comportamientos inconsistentes, hace que tu código sea más difícil de mantener, y puede causar problemas con herramientas de procesamiento HTML o analizadores estrictos.
Esta misma regla se aplica a todos los atributos booleanos en HTML, incluyendo disabled, readonly, checked, required, hidden, autoplay, y muchos otros.
También es importante notar que multiple="false" no deshabilita el atributo. Como el atributo sigue presente en el elemento, el navegador lo trata como habilitado. Para deshabilitar un atributo booleano, debes eliminarlo completamente del elemento.
Ejemplos
❌ Inválido: usar "true" como valor
<label for="colors">Selecciona tus colores favoritos:</label>
<select id="colors" name="colors" multiple="true">
<option value="red">Rojo</option>
<option value="green">Verde</option>
<option value="blue">Azul</option>
</select>
Esto desencadena el error de validación: Valor inválido “true” para el atributo “multiple” en el elemento “select”.
✅ Corregido: solo nombre del atributo (preferido)
<label for="colors">Selecciona tus colores favoritos:</label>
<select id="colors" name="colors" multiple>
<option value="red">Rojo</option>
<option value="green">Verde</option>
<option value="blue">Azul</option>
</select>
✅ Corregido: valor de cadena vacía
<label for="colors">Selecciona tus colores favoritos:</label>
<select id="colors" name="colors" multiple="">
<option value="red">Rojo</option>
<option value="green">Verde</option>
<option value="blue">Azul</option>
</select>
✅ Corregido: valor que coincide con el nombre del atributo
<label for="colors">Selecciona tus colores favoritos:</label>
<select id="colors" name="colors" multiple="multiple">
<option value="red">Rojo</option>
<option value="green">Verde</option>
<option value="blue">Azul</option>
</select>
❌ Error común: usar "false" para deshabilitar
<!-- Esto NO deshabilita la selección múltiple — el atributo sigue presente -->
<select name="colors" multiple="false">
<option value="red">Rojo</option>
<option value="green">Verde</option>
</select>
✅ Forma correcta de deshabilitar: eliminar completamente el atributo
<label for="color">Selecciona un color:</label>
<select id="color" name="color">
<option value="red">Rojo</option>
<option value="green">Verde</option>
</select>
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.
Más información: