Сдвиг фокус с помощью клавиш со стрелками в JavaScript
Я хочу иметь возможность перемещаться по всем фокусируемым элементам на моей веб-странице с помощью клавиши со стрелкой. Поэтому, когда нажата клавиша «вниз», фокус должен сместиться на фокусируемый элемент под текущим сфокусированным элементом. Вы получаете представление о других клавишах со стрелками, когда нет фокусируемого элемента, на который нужно перейти, фокус должен остаться прежним.
Это то, что я получил так далеко:
$(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
});
Идея состояла в том, чтобы получить все элементы, способные фокусироваться, а затем выбрать тот, который подходит для стрелки, и сместить фокус.
Я не могу заставить этот код работать (он содержит ошибку), и я не совсем уверен, что он даже будет работать.
Спасибо заранее
[РЕДАКТИРОВАТЬ]: Я думаю, я был немного расплывчатым. Я не только хочу идти влево и вправо, но и вверх и вниз.