好吧,这是我的代码,我试图添加到输入按钮选项卡行为(当我点击进入,下一个输入将集中)。
当我按enter键时,出现Uncaught RangeError。我什么都试过了,但什么都没变。
环境:JavaEE(primefaces)。jquery .
function ifNotTextPass(selector) {
if (selector.next().is('input[type="text"]')) {
alert('yes');
selector.next().focus();
} else {
if (selector.next() !== null) {
ifNotTextPass(selector.next());
}
}
}
$(document).ready(function () {
$('input[type="text"]').keypress(function (e) {
if (e.keyCode === 13) {
ifNotTextPass($(this));
}
});
});
一个jQuery选择器永远不会返回null,所以你有递归,直到堆栈溢出。试试这个:
if (selector.next().length) {
问题是:对函数的无限调用,就像一个无限循环。
我改变了整个代码结构。我已经得到了解决方案,没有任何错误。
此代码将为输入按钮提供与选项卡按钮相同的行为。另外,它将只关注文本和文本区域。
$(document).on('keydown', 'input[type="text"],textarea', function(e) {
var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
if(key === 13) {
e.preventDefault();
$(this).focus();
var inputs = $(this).parents('body').find(':input[type="text"]:enabled:visible:not("disabled"),textarea');
inputs.eq( inputs.index(this)+ 1 ).focus();
inputs.eq( inputs.index(this)+ 1 ).click();
e.preventDefault();
e.stopPropagation();
}
}