Tengo botones que son elementos div y quiero hacerlos para que el usuario pueda presionar la tecla de tabulación en su teclado y moverse entre ellos. Intenté envolver su texto en etiquetas de anclaje pero no parece funcionar.
¿Alguien tiene una solución?
href
atributo, debería funcionar. Puede ser o no un uso apropiado del marcado a menos que el elemento activable realmente haga algo.Respuestas:
Agrega
tabindex
atributos a tusdiv
elementos.Ejemplo:
<div tabindex="1">First</div> <div tabindex="2">Second</div>
Según el comentario de steveax, si no desea que el orden de tabulación se desvíe de donde está el elemento en la página, establezca el valor
tabindex
en0
:<div tabindex="0">First</div> <div tabindex="0">Second</div>
fuente
tabindex=0
para no estropear el orden de tabulación natural.para aquellos interesados, además de la respuesta aceptada, puede agregar el siguiente jquery para hacer que el estilo div cambie cuando lo presione, y también manejar Enter y Space para activar un clic (luego su controlador de clic hará el resto)
Estoy seguro de que alguien ha convertido esto en un complemento jq $ (). MakeTabStop
fuente
Agregue el
tabindex="0"
atributo a cada div que desee tabular. Luego use CSS pseudoclases: hover y: focus, por ejemplo, para indicar al usuario de la aplicación que el div está enfocado y se puede hacer clic, por ejemplo. Utilice JavaScript para manejar el clic.var doc = document; var providers = doc.getElementsByClassName("provider"); for (var i = 0; i < providers.length; i++) { providers[i].onclick = function() { console.log(this.innerHTML); }; }
.provider { flex: 0 1 auto; align-self: auto; width: 256px; height: 48px; margin-top: 12px; margin-right: 12px; text-align: center; line-height: 48px; text-transform: uppercase; background-size: contain; background-repeat: no-repeat; background-position: 10%; background-color: gray; } .provider:hover{ cursor: pointer; } .provider:focus{ -webkit-box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4); -moz-box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4); box-shadow: 0px 2px 8px 2px rgba(0,0,0,0.4); }
<h4>Click in this area first then press tab</h4> <div id="email" class="provider" tabindex="0">email</div> <div id="facebook" class="provider" tabindex="0">facebook</div> <div id="github" class="provider" tabindex="0">github</div> <div id="google" class="provider" tabindex="0">google</div> <div id="twitter" class="provider" tabindex="0">twitter</div>
fuente
Haga que los elementos se puedan tabular y hacer clic en presionando una tecla usando jquery
Supuestos
Ejemplo de HTML:
... <div onclick="clicked(this)">Button 1</div> <div onclick="clicked(this)">Button 2</div> <div onclick="clicked(this)">Button 3</div> ...
Código Jquery: este es el código que se ejecutará cuando la página se haya cargado. Debe ejecutarse en su 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 used if (key === ' ' || key === 'Enter') { // Only send click events for Space // or Enter keys evt.currentTarget.click(); // Run the click event for element } }); });
Puede encontrar un ejemplo práctico aquí .
fuente