not - ¿Qué es el atributo HTML tabindex?
tabindex not working in chrome (10)
¿Para qué se tabindex
atributo tabindex
en HTML?
Controlar el orden de tabulación (presionar la tecla de tabulación para mover el foco) dentro de la página.
Referencia: http://www.w3.org/TR/html401/interact/forms.html#h-17.11.1
Cuando el usuario presiona el botón de tabulación, el usuario pasará por el formulario en el orden 1, 2 y 3, como se indica en el siguiente ejemplo.
Por ejemplo:
Name: <input name="name" tabindex="1" />
Age: <input name="age" tabindex="3" />
Email: <input name="email" tabindex="2" />
El atributo HTML tabindex es responsable de indicar si un elemento es accesible mediante la navegación con el teclado . Cuando el usuario presiona la tecla Tab, el enfoque cambia de un elemento a otro. Al utilizar el atributo tabindex, el flujo de orden de tabulación se desplaza.
El tabindex se usa para definir una secuencia que los usuarios siguen cuando usan la tecla Tab para navegar por una página. De forma predeterminada, el orden de tabulación natural coincidirá con el orden de origen en el marcado.
El atributo de contenido de tabindex permite a los autores controlar si se supone que un elemento es enfocable, si se puede alcanzar mediante la navegación de enfoque secuencial y cuál es el orden relativo del elemento para los fines de la navegación de enfoque secuencial. El nombre "índice de pestaña" proviene del uso común de la tecla "pestaña" para navegar a través de los elementos enfocados. El término "tabulación" se refiere a avanzar a través de los elementos enfocados que se pueden alcanzar utilizando la navegación de enfoque secuencial.
Recomendación W3C: HTML5
Sección 7.4.1 Navegación de enfoque secuencial y el atributo tabindex
El tabindex
comienza en 0 o en cualquier número entero positivo y se incrementa hacia arriba. Es común ver que se evita el valor 0 porque en versiones anteriores de Mozilla e IE, el tabindex comenzaría en 1, avanzaría a 2, y solo después de 2 iría a 0 y luego a 3. El valor entero máximo para tabindex
es 32767
. Si los elementos tienen el mismo tabindex
entonces el índice de tabulación coincidirá con el orden de origen en el marcado. Un valor negativo eliminará el elemento del índice de la pestaña para que nunca se centre.
Si a un elemento se le asigna un tabindex
de tabindex
de -1
, se eliminará el elemento y nunca se podrá enfocar, pero se puede enfocar al elemento mediante programación utilizando element.focus()
.
Si especifica el atributo tabindex
sin valor o un valor vacío, se ignorará.
Si el atributo disabled
se establece en un elemento que tiene un tabindex
, el elemento se ignorará.
Si un tabindex
se establece en cualquier lugar dentro de la página, independientemente de dónde se encuentre en relación con el resto del código (podría estar en el pie de página, en el área de contenido, donde sea) si hay un tabindex
definido, el orden de tabulación comenzará en el elemento al que se asigna explícitamente el valor de tabindex
más bajo por encima de 0. Luego, recorrerá los elementos definidos y solo después de que se hayan tabulado los elementos de tabindex
explícitos, volverá al principio del documento y seguirá el orden natural de tabulación.
En la especificación HTML4, solo los siguientes elementos admiten el atributo tabindex: anchor , area , button , input , object , select y área de textarea . Pero la especificación HTML5, teniendo en cuenta la accesibilidad, permite que todos los elementos se asignen a tabindex
.
-
Por ejemplo
<ul tabindex="-1">
<li tabindex="1"></li>
<li tabindex="2"></li>
<li tabindex="3"></li>
</ul>
es lo mismo que
<ul tabindex="-1">
<li tabindex="1"></li>
<li tabindex="1"></li>
<li tabindex="1"></li>
</ul>
porque, independientemente del hecho de que a todos se les asigna tabindex="1"
, seguirán el mismo orden, el primero es el primero y el último el último. Esto también es lo mismo.
<div>
<a></a>
<a></a>
<a></a>
</div>
porque no es necesario definir explícitamente el índice de tabulación si se trata de un comportamiento predeterminado. Un div
por defecto no será enfocable, las etiquetas de anchor
serán.
En palabras simples, tabindex
se utiliza para centrarse en los elementos. Sintaxis: tabindex="numeric_value"
Este numeric_value
es el peso del elemento. El valor más bajo será accedido primero.
La tabulación a través de los controles suele suceder de forma secuencial a medida que aparecen en el código HTML.
Usando tabindex, la tabulación fluirá desde el control con el tabindex más bajo hasta el control con el tabindex más alto en orden secuencial de tabindex
Los valores que establezca determinan el orden en el que el enfoque del teclado se moverá entre los elementos del sitio web.
En el siguiente ejemplo, la primera vez que presiona tabulador, el cursor se moverá a #foo, luego #awesome, luego #bar
<input id="foo" tabindex="1" />
<input id="bar" tabindex="3" />
<input id="awesome" tabindex="2" />
Si no ha definido índices de pestañas en ningún lugar, el foco del teclado seguirá las etiquetas HTML de su página en el orden en que están definidas en el documento HTML.
Si tabula más veces de las que ha especificado índices de tabulación, el enfoque se moverá como si no hubiera índices de tabulación, es decir, en el orden de aparición de las etiquetas HTML.
Normalmente, cuando las pestañas de usuario de campo a campo en un formulario (en un navegador que permite tabular, no todos los navegadores lo hacen), el orden es el orden en que aparecen los campos en el código HTML.
Sin embargo, a veces desea que el orden de las pestañas fluya de manera un poco diferente. En ese caso, puede numerar los campos usando TABINDEX. Las pestañas luego fluyen en orden desde el TABINDEX más bajo hasta el más alto.
Más información sobre esto se puede encontrar aquí w3
Otra buena ilustración se puede encontrar here
Se puede utilizar para modificar la secuencia de navegación de enfoque de elemento de formulario predeterminada.
Así que si tienes:
text input A
text input B
submit button C
usando la tecla de tabulación navega a través de A-> B-> C. Tabindex te permite cambiar ese flujo.
tabindex
es un atributo global responsable de dos cosas:
- establece el orden de los elementos "enfocables" y
- hace que los elementos "enfocable" .
En mi opinión, la segunda cosa es aún más importante que la primera. Hay muy pocos elementos que se pueden enfocar de forma predeterminada (por ejemplo, <a> y controles de formulario). Los desarrolladores a menudo agregan algunos controladores de eventos de JavaScript (como ''onclick'') en elementos no enfocados (<div>, <span> y así sucesivamente). Y la manera de hacer que su interfaz responda no solo a los eventos del mouse, sino también a los eventos del teclado (por ejemplo, ''onkeypress'') también hace que dichos elementos se puedan enfocar. Y en el último caso, si no desea establecer el orden, solo haga que su elemento se tabindex="0"
use tabindex="0"
en todos estos elementos:
<div tabindex="0"></div>
Además, si no desea que se pueda enfocar a través de la tecla de tabulación, use tabindex="-1"
. Por ejemplo, el enlace a continuación no se enfocará mientras se usan las teclas de tabulación para atravesar.
<a href="#" tabindex="-1">Tab key cannot reach here!</a>