Настройка фокуса с помощью стрелок влево и вправо (HTML + JS)

StackOverflow https://stackoverflow.com/questions/1210694

Вопрос

Есть ли способ заставить стрелку влево вести себя как кнопка 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 прежде чем что-то делать, убедитесь, что вы не проскользнули мимо начала или конца массива фокусируемых элементов.Вам также нужно быть осторожным, вызывая это, когда пользователь находится внутри текстового поля.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top