Я хочу переместить навигацию с клавиши табуляции на клавишу Enter. Для этого я подключил событие нажатия клавиши вида
$("form").live("keypress", function (e) {
if (e.keyCode == 13) {
//here should come the code for finding next element and focusing it
return false; // this line prevents submission of form on enter key
}
В этой функции мне просто нужно найти следующий элемент формы и перенести фокус на него. Чтобы получить следующий элемент формы, я использовал селектор из этого ответа . Но есть несколько проблем с этим:
- не обслуживает списки выбора и любые другие элементы, кроме ввода.
- не обслуживает скрытые, отключенные и доступные только для чтения входы
Кроме того, он использует свойство index входов для поиска следующих элементов, но проблема заключается в том, что я оповещаю все элементы формы об их индексах. они не уникальны.
$('form input,form select').each(function (ind, elem) {
alert($(elem).attr("name"));
alert($(elem).index());
});
Существует множество элементов формы с индексом 0. Примечательно, что некоторые элементы формы вставляются в DOM с использованием JavaScript, т.е. после загрузки страницы. Как я могу решить эту проблему?