当您按tab键时,它应该将tab键转到下一个空白文本输入框javascript,而不使用tab索引

当您按tab键时,它应该将tab键转到下一个空白文本输入框javascript,而不使用tab索引,javascript,Javascript,例如,表单中有多个输入字段,其中有些字段在此之前是自动填充的。如果我按tab键,则应跳过自动填充的输入字段,并转到空白输入字段 我试过了,但是当我开始在空白输入中写什么时,它也被自动填充和跳过,以至于 $(".item-input").keyup(function () { if (this.value.length !== 0) { var $next = $(this).next('.item-input'); if ($next.length)

例如,表单中有多个输入字段,其中有些字段在此之前是自动填充的。如果我按tab键,则应跳过自动填充的输入字段,并转到空白输入字段

我试过了,但是当我开始在空白输入中写什么时,它也被自动填充和跳过,以至于

$(".item-input").keyup(function () {
    if (this.value.length !== 0) {
        var $next = $(this).next('.item-input');
        if ($next.length)
            $(this).next('.item-input').focus();
        else
            $(this).blur();
    }
});

我会将事件更改为keydown而不是keyup,因为keyup已经处理了tab事件本身,并且没有真正的取消操作,此时您将看到它在选择下一个空代码之前跳转到下一个字段

对于其余部分,我建议您首先获取所有元素,然后检查触发事件的字段,并开始检查索引+1中的其他字段

所以大体上,我想我会编写如下代码,不需要模糊你当前所在的领域,专注于新领域就可以了

shiftKey有一个手柄,用户仍然可以使用shift+tab返回一个:我在该检查来源的链接中发表了评论

让itemInputs=Array.from document.querySelectorAll'.item input'; $'.item input'。在“keydown”上,函数e{ 如果e.shiftKey{ //这里禁止操作 //见:https://stackoverflow.com/questions/3044083/what-is-the-key-code-for-shifttab 回来 } 开关e.keyCode{ 案例9: //我们可以在这里使用循环,但是,嘿,默认值从函数中返回 //所以这只是跳过到switch语句后面 打破 违约: 回来 } //找到我们在原始字段集中的位置 让index=itemInputs.findIndex v=>e.target==v+1; //如果我们相等或更大,那么 而索引难道你不想关注$next,并检查它的长度值吗?我认为初始长度属性应该是jquery选择器长度。另外,您只是在按keyup键,但没有验证按下的键是否是tab键非常感谢@icepickle这正是我所看到的for@nareshbabuNuli不客气,如果对您有帮助,请不要忘记将答案标记为答案您可以勾选我答案旁边的复选框