Skip to main content
Validación HTML

Valor incorrecto “” para el atributo “tabindex” en el elemento “X”: La cadena vacía no es un entero válido.

Acerca de este problema HTML

El atributo tabindex controla si un elemento puede recibir foco del teclado y en qué orden. El validador del W3C reporta este error cuando encuentra tabindex="" porque la especificación HTML requiere que el valor del atributo sea un entero válido — y una cadena vacía no puede ser interpretada como tal. Esto comúnmente ocurre cuando se omite accidentalmente un valor, cuando un motor de plantillas genera un valor en blanco, o cuando un CMS genera el atributo sin un valor por defecto apropiado.

Por qué es importante

La navegación por teclado es fundamental para la accesibilidad web. Los lectores de pantalla y las tecnologías asistivas dependen de los valores de tabindex para determinar el comportamiento del foco. Un atributo tabindex vacío crea ambigüedad: los navegadores pueden ignorarlo o manejarlo de manera inconsistente, llevando a un comportamiento impredecible del foco para usuarios de teclado y tecnologías asistivas. Más allá de la accesibilidad, también significa que tu HTML es inválido según el estándar vivo HTML de WHATWG, que define estrictamente tabindex como que acepta solo un entero válido.

Cómo funciona tabindex

El atributo acepta un valor entero con tres rangos significativos:

  • Valor negativo (ej., tabindex="-1"): El elemento puede recibir foco programáticamente (a través de .focus() de JavaScript), pero se excluye del orden secuencial de navegación por teclado.
  • tabindex="0": El elemento se añade al orden natural de navegación basado en su posición en el código fuente del documento. Esta es la forma más común de hacer que elementos no interactivos (como un <div> o <span>) puedan recibir foco del teclado.
  • Valor positivo (ej., tabindex="1", tabindex="5"): El elemento se coloca en el orden de navegación antes que los elementos con tabindex="0" o sin tabindex, con números más bajos recibiendo foco primero. Usar valores positivos generalmente se desaconseja porque anula el orden natural del documento y hace que la gestión del foco sea más difícil de mantener.

Cómo solucionarlo

  1. Si el elemento debe poder recibir foco en el orden de navegación, establece tabindex="0".
  2. Si el elemento solo debe poder recibir foco programáticamente, establece tabindex="-1".
  3. Si no necesitas comportamiento de foco personalizado, elimina el atributo tabindex completamente. Los elementos interactivos como <a>, <button> e <input> ya pueden recibir foco por defecto.
  4. Si una plantilla o CMS genera el atributo, asegúrate de que la lógica proporcione un entero válido u omita el atributo cuando no haya valor disponible.

Ejemplos

❌ Valor tabindex vacío (desencadena el error)

<div tabindex="">Click me</div>

<button tabindex="">Submit</button>

✅ Corregido: entero válido proporcionado

<div tabindex="0">Click me</div>

<button tabindex="-1">Submit</button>

✅ Corregido: atributo eliminado cuando no es necesario

Los elementos interactivos como <button> pueden recibir foco por defecto, por lo que tabindex puede simplemente eliminarse:

<button>Submit</button>

✅ Corregido: renderizado condicional en una plantilla

Si estás usando un sistema de plantillas, asegúrate de que el atributo solo se renderice cuando existe un valor válido:

<!-- En lugar de siempre generar tabindex -->

<!-- Malo: <div tabindex="{{ tabindexValue }}"> -->


<!-- Solo generar el atributo cuando se establezca un valor -->

<div tabindex="0">Interactive content</div>

Una nota sobre los valores positivos de tabindex

Aunque los enteros positivos como tabindex="1" o tabindex="3" son técnicamente válidos, fuerzan un orden de navegación personalizado que diverge del orden visual y del DOM de la página. Esto crea confusión para los usuarios de teclado y es difícil de mantener a medida que las páginas evolucionan. Las Prácticas de Autoría WAI-ARIA recomiendan evitar valores positivos de tabindex. Mantente con 0 y -1 en casi todos los casos.

Encuentra problemas como este automáticamente

Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.

Ayúdanos a mejorar nuestras guías

¿Te ha sido útil esta guía?

¿Listo para validar tus sitios?
Inicia tu prueba gratuita hoy.