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

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


person Charlino    schedule 31.07.2009    source источник


Ответы (1)


То, что у вас есть до сих пор, кажется прекрасным.

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

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

person seth    schedule 31.07.2009