Настройка фокуса с помощью стрелок влево и вправо (HTML + JS)
-
06-07-2019 - |
Вопрос
Есть ли способ заставить стрелку влево вести себя как кнопка tab (установить фокус на следующий фокусируемый элемент), а стрелку вправо - как shift + tab (установить фокус на предыдущий фокусируемый элемент)?
Я зашел так далеко:
$().keypress(function(e) {
if (e.keyCode == 37) {
alert('I want to do a shift-tab');
}
else if (e.keyCode == 39) {
alert('I want to do a tab');
}
});
Но Google не настолько полезен, поэтому я решил разместить здесь небольшой пост, пока буду гуглить еще.
Спасибо!
О, и это исключительно для FF3.0, так что мне не нужно беспокоиться о других неприятностях браузера.
Решение
То, что у вас есть до сих пор, кажется прекрасным.
Вы могли бы сохранить список "фокусируемых" элементов и просто выполнять итерации по списку, сохраняя указатель на текущий:
// or $('input')..depends what you want to focus on
var nodes = $('.focusable'), idx = -1;
$().keypress( function(e) {
if (e.keyCode === 37) {
nodes.get(++idx).focus();
}
else if (e.keyCode === 39) {
nodes.get(--idx).focus();
}
});
Однако это всего лишь приблизительный набросок.Вам нужно было бы проверить idx
прежде чем что-то делать, убедитесь, что вы не проскользнули мимо начала или конца массива фокусируемых элементов.Вам также нужно быть осторожным, вызывая это, когда пользователь находится внутри текстового поля.