Mam przyciski, które są elementami div i chcę je tak zrobić, aby użytkownik mógł naciskać klawisz Tab na klawiaturze i poruszać się między nimi. Próbowałem zawinąć ich tekst w znaczniki kotwicy, ale wydaje się, że nie działa.
Czy ktoś ma rozwiązanie?
href
atrybut, powinna działać. Może to być właściwe użycie znaczników, chyba że aktywowany element faktycznie coś robi.Odpowiedzi:
Dodaj
tabindex
atrybuty do swoichdiv
elementów.Przykład:
<div tabindex="1">First</div> <div tabindex="2">Second</div>
Za komentarz steveax, o ile nie chcesz kolejność tabulatora do odstąpienia od której element jest na stronie, należy ustawić
tabindex
na0
:<div tabindex="0">First</div> <div tabindex="0">Second</div>
źródło
tabindex=0
, aby nie zaszkodzić naturalnej kolejności tabulacji.dla zainteresowanych, oprócz zaakceptowanej odpowiedzi, możesz dodać następujące jquery, aby zmienić styl div po przejściu do niego tabulatorem, a także obsłużyć Enter i Spację, aby wywołać kliknięcie (wtedy twoja obsługa kliknięcia zrobi resztę)
Jestem pewien, że ktoś zrobił to we wtyczce jq $ (). MakeTabStop
źródło
Dodaj
tabindex="0"
atrybut do każdego elementu div, który ma być tabulowany. Następnie użyj pseudoklas CSS: hover i: focus, na przykład, aby wskazać użytkownikowi aplikacji, że element div jest aktywny i można go kliknąć. Użyj JavaScript do obsługi kliknięcia.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>
źródło
Uczyń elementy tabulatorami i klikalnymi, naciskając klawisz przy użyciu jQuery
Założenia
Przykładowy html:
... <div onclick="clicked(this)">Button 1</div> <div onclick="clicked(this)">Button 2</div> <div onclick="clicked(this)">Button 3</div> ...
Kod JQuery: jest to kod, który zostanie uruchomiony po załadowaniu strony. Musi działać na Twojej stronie 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 } }); });
Można znaleźć pracy przykład tutaj .
źródło