Вот модифицированная версия моей функции. Это делает следующее:
- Запрещает работать клавише ввода
на любой элемент формы другой
чем текстовая область, кнопка, отправить.
- Клавиша ввода теперь работает как вкладка.
- protectDefault (), stopPropagation () вызывается для элемента в порядке, но вызывается в форме, кажется, останавливает событие, чтобы когда-либо получить элемент.
Итак, мой обходной путь - проверить тип элемента, если тип не является текстовой областью (ввод разрешен), или кнопкой / отправить (ввод = щелчок), тогда мы просто перейдем к следующей вещи.
Вызывать .next () для элемента бесполезно, потому что другие элементы могут не быть простыми братьями и сестрами, однако, поскольку DOM в значительной степени гарантирует порядок при выборе, так что все в порядке.
function preventEnterSubmit(e) {
if (e.which == 13) {
var $targ = $(e.target);
if (!$targ.is("textarea") && !$targ.is(":button,:submit")) {
var focusNext = false;
$(this).find(":input:visible:not([disabled],[readonly]), a").each(function(){
if (this === e.target) {
focusNext = true;
}
else if (focusNext){
$(this).focus();
return false;
}
});
return false;
}
}
}