Przesuwaj fokus za pomocą klawiszy strzałek w JavaScript
Chcę móc poruszać się po wszystkich elementach, które można ustawić na mojej stronie, za pomocą klawisza strzałki. Tak więc, gdy naciśnięty zostanie klawisz „w dół”, fokus powinien przesunąć się do elementu ustawialnego pod bieżącym elementem zogniskowanym. Masz pomysł na inne klawisze strzałek, gdy nie ma elementu, na który można by się ustawić, fokus powinien pozostać taki sam.
Do tej pory dotarłem:
$(document).keydown(function(e){
if (e.keyCode == 37) { //left
var offset = $("*:focus").offset();
var allElements = $("#container").find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]');
var arr = jQuery.makeArray(allElements);
var topLeft = offset.left
var minus = topLeft;
var currentElement = $("*:focus");
for(var i = 0; i < arr.length; i++)
{
if ( (arr[i].offset().left < offset.left) // This doesn't work for some reason
&& ((offset.left - arr[i].offset().left) < minus))
{
currentElement = arr[i];
minus = offset.left - arr[i].offset().left;
topLeft = arr[i].offset().left;
}
currentElement.focus();
}
alert( "left pressed" );
return false;
}
// Other Keys
});
Chodziło o to, aby uzyskać wszystkie elementy, które można ustawić, a następnie wybrać ten, który nadaje się do strzałki i fokusa.
Nie jestem w stanie uruchomić tego kodu (zawiera błąd) i nie jestem całkowicie pewien, czy to zadziała.
Z wyprzedzeniem
[EDIT]: Myślę, że byłem trochę niejasny. Nie tylko chcę iść w lewo i prawo, ale także w górę iw dół.