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