Настройка фокуса с помощью стрелок влево и вправо (HTML + JS) - PullRequest
0 голосов
/ 31 июля 2009

Можно ли заставить стрелку влево вести себя как кнопка вкладки (установить фокус на следующий фокусируемый элемент), а стрелка вправо вести себя как клавиша 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 не так уж и полезен, поэтому я решил написать здесь короткую заметку, а Google еще немного.

Спасибо!

О, и это чисто для FF3.0, поэтому мне не нужно беспокоиться о других неприятностях браузера.

1 Ответ

5 голосов
/ 31 июля 2009

То, что у вас есть, кажется нормальным.

Вы можете хранить список «фокусируемых» элементов и просто перебирать список, сохраняя указатель на текущий:

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

...