71 votes

Puis-je définir dynamiquement le tabindex en JavaScript ?

Existe-t-il un attribut comme tab-index ?

CONTEXTE : Je rends une section d'un formulaire web visible ou invisible en fonction de certaines conditions, et je veux définir manuellement l'index de l'onglet lorsque cette section particulière est visible.

113voto

hunter Points 33850
document.getElementById("link3").tabIndex = 6;

7 votes

$('#link3').attr( 'tabIndex', 6 ) ; // pour jQuery

6 votes

L'attribut est tabindex mais el.tabindex ne fonctionne pas, cependant el.tabIndex fait. Tellement bizarre.

2 votes

@BillCriswell comme vous le savez probablement, les attributs HTML sont en minuscules et peuvent souvent avoir - Les propriétés javascript sont différentes - majuscules. Le problème est que les éléments dom ont souvent à la fois des attributs html et des propriétés javascript. Les propriétés html reflètent les attributs javascript. De la même manière que vous utiliseriez class en html, mais className en javascript

10voto

Nikz Points 302

Utilisation de JQuery nous pouvons définir l'index de l'onglet dynamiquement et facilement Essayez ce code - définissez le tabindex et incrémenter la variable

$(function() {
    var tabindex = 1;
    $('input,select').each(function() {
        if (this.type != "hidden") {
            var $input = $(this);
            $input.attr("tabindex", tabindex);
            tabindex++;
        }
    });
});

2voto

Serge Stroobandt Points 525

Réglage dynamique tabindex = "-1" pour readonly entrées

C'est une question intéressante ; plus Le support CSS est toujours non disponible .

Voici comment tabindex peut être réglé sur -1 pour tous readonly input éléments :

NodeList.prototype.forEach = NodeList.prototype.forEach || Array.prototype.forEach;

document.querySelectorAll('input[readonly="readonly"]').forEach(x => x.tabIndex = -1);

La première ligne garantit que le NodeList est étendue avec la classe forEach méthode. Cette méthode est expliqué plus en détail ici .

0 votes

Pour tous ceux qui tombent sur cette réponse, ce n'est pas une bonne pratique et il faut l'éviter pour l'exemple donné (entrées). Les utilisateurs de lecteurs d'écran doivent pouvoir accéder aux mêmes informations que les autres utilisateurs. En définissant tabindex="-1" sur un élément, celui-ci est retiré de la liste des éléments focalisables de la page et est effectivement masqué par un lecteur d'écran. tabindex="-1" ne doit être utilisé que sur des éléments qui ne sont pas focalisables en premier lieu pour leur permettre de recevoir le focus. par programme . voir webaim.org/techniques/clavier/tabindex en bas.

0 votes

@GrahamRitchie Si vous citez < webaim.org/techniques/clavier/tabindex >, alors s'il vous plaît, faites-le en entier. Voici le paragraphe précédent qui s'applique à mon cas d'utilisation spécifique : "Une valeur de -1 peut également être utile dans les widgets et les menus complexes qui utilisent des touches fléchées ou d'autres touches de raccourci. Cela permet de s'assurer qu'un seul élément du widget est navigable avec la touche Tab tout en permettant de mettre l'accent sur d'autres composants du widget."

1voto

ShapCyber Points 399

Crée et réinitialise dynamiquement le tabIndex d'un élément HTML.

L'attribut tabindex spécifie l'ordre de tabulation d'un élément HTML, tel que l'ensemble des "li", "a" e.t.c. L'attribut tabindex est pris en charge par tous les principaux navigateurs.

Dans cet exemple, nous allons définir l'indice de tabulation pour les éléments de la liste "li". Habituellement, l'indice de tabulation commence à '0', mais nous pouvons le réinitialiser pour qu'il commence à '1'. J'utilise Jquery pour faire cela.

Voir le fonctionnement ici

<ul id="dfruits">
<li>Apple</li>
<li>Dragonfruit</li>
<li>Damson</li>
<li>Cloudberry</li>
<li>Blueberry</li>
<li>Cherry</li>
<li>Blackcurrant</li> 
<li>Coconut</li>
<li>Avocado</li>   
 <li>Pinaple</li>     
</ul>

$(document).ready(function() {

var 
SomeFruitsList=$("ul#dfruits li"),
//set tab index to starts from 1
tabindex = 0;   

SomeFruitsList.each(function() {
 // add tab index number to each list items
  tabindex++; 
$(this).attr("tabindex","TabIndex  " +tabindex); 

var tabIndex = $(this).attr("tabindex");
 // add tab index number to each list items as their title   
$(this).attr("title",tabIndex);

    $(this).append('<br/><em>My tabIndex is number:    '+tabIndex+'<em>')
})
    });

0voto

Andrew Points 959

Quelques JS utiles :

for (let tabbable of document.querySelectorAll('[tabindex]')) {

}

element.setAttribute('tabindex', '-1');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X