这是我功能的修改版本。它执行以下操作:
- 防止Enter键在除textarea,button和Submit之外的表单的任何元素上起作用。
- 回车键现在就像一个标签。
- preventDefault(),在元素上调用stopPropagation()很好,但是在表单上调用似乎阻止事件到达元素。
因此,我的解决方法是检查元素类型,如果该类型不是textarea(允许输入),或者不是按钮/提交(enter = click),那么我们只需跳到下一页即可。
在元素上调用.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; } }}


