"Uncaught RangeError: Maximum call stack size exceeded" Java envirenment primefaces



好吧,这是我的代码,我试图添加到输入按钮选项卡行为(当我点击进入,下一个输入将集中)。

当我按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();
            }   
}              

相关内容

最新更新