Tenho botões que são elementos div e quero torná-los de forma que o usuário possa pressionar a tecla tab no teclado e se mover entre eles. Eu tentei envolver o texto em tags âncora, mas não parece funcionar.
NB: tabindex não é um atributo válido de divs em HTML <5. Referência {Corrigido após Neps apontar meu erro}
Dancrumb
3
@Dancrumb, sim, eles estão em HTML5
Neps de
45
Provavelmente é melhor usar, tabindex=0porém, para não atrapalhar a ordem natural de tabulação.
steveax
6
btw, isso não permite que alguém clique nele com enter.
Ciantic
4
Hmn, @Ciantic, alguma ideia de como podemos contornar ou simular um clique em Enter enquanto acessamos esse div? hmn
Jomar Sevillejo
7
para os interessados, além da resposta aceita, você pode adicionar o seguinte jquery para fazer a mudança de estilo div quando você tabular para ele, e também manipular Enter e Espaço para acionar um clique (então seu manipulador de cliques fará o resto)
Acredito que seja melhor usar o evento keydown em vez do evento keyup, conforme recomendado aqui: developer.mozilla.org/en-US/docs/Web/Accessibility/… . Uma aparente vantagem do keydown é que se você retornar false de sua função hander (após a chamada click ()), ele interromperá corretamente a propagação do evento em outro lugar na página, enquanto com keyup isso não funciona.
M Katz
O espaço também pode rolar a página. Pode ser necessário usar a função preventDefault também.
b_laoshi
3
Adicione o tabindex="0"atributo a cada div que você deseja tabular. Em seguida, use as pseudo classes CSS: hover e: focus, por exemplo, para indicar ao usuário do aplicativo que o div está em foco e pode ser clicado, por exemplo. Use JavaScript para lidar com o clique.
var doc = document;var providers = doc.getElementsByClassName("provider");for(var i =0; i < providers.length; i++){
providers[i].onclick =function(){
console.log(this.innerHTML);};}
<h4>Click in this area first then press tab</h4><divid="email"class="provider"tabindex="0">email</div><divid="facebook"class="provider"tabindex="0">facebook</div><divid="github"class="provider"tabindex="0">github</div><divid="google"class="provider"tabindex="0">google</div><divid="twitter"class="provider"tabindex="0">twitter</div>
Torne os elementos tabuláveis e clicáveis pressionando a tecla usando jquery
Premissas
Todos os elementos que são do tipo não tabulável e não clicável e devem ser clicáveis têm um atributo onclick (isso pode ser alterado para uma classe ou outro atributo)
Todos os elementos são do mesmo tipo; Vou usar divs.
Código Jquery: este é o código que será executado quando a página for carregada. Ele precisa ser executado em sua página HTML.
$(()=>{// make divs with an onclick attribute tabbable/clickable
$('div[onclick]').attr('tabindex','0')// Add tab indexes.keypress((evt)=>{var key = evt.key;
evt.preventDefault();// Ensure all default keypress// actions are not usedif(key ===' '|| key ==='Enter'){// Only send click events for Space// or Enter keys
evt.currentTarget.click();// Run the click event for element}});});
href
atributo, ele deve funcionar. Pode ou não ser um uso apropriado da marcação, a menos que o item ativável realmente faça algo.Respostas:
Adicione
tabindex
atributos aos seusdiv
elementos.Exemplo:
De acordo com o comentário de steveax, se você não quiser que a ordem das guias se desvie de onde o elemento está na página, defina o
tabindex
para0
:fonte
tabindex=0
porém, para não atrapalhar a ordem natural de tabulação.para os interessados, além da resposta aceita, você pode adicionar o seguinte jquery para fazer a mudança de estilo div quando você tabular para ele, e também manipular Enter e Espaço para acionar um clique (então seu manipulador de cliques fará o resto)
Tenho certeza de que alguém transformou isso em um plugin jq $ (). MakeTabStop
fonte
Adicione o
tabindex="0"
atributo a cada div que você deseja tabular. Em seguida, use as pseudo classes CSS: hover e: focus, por exemplo, para indicar ao usuário do aplicativo que o div está em foco e pode ser clicado, por exemplo. Use JavaScript para lidar com o clique.fonte
Torne os elementos tabuláveis e clicáveis pressionando a tecla usando jquery
Premissas
Amostra de html:
Código Jquery: este é o código que será executado quando a página for carregada. Ele precisa ser executado em sua página HTML.
Você pode encontrar um exemplo de trabalho aqui .
fonte