提问者:小点点

填写输入字段后将光标焦点更改为下一个输入


我正在处理一个项目,在这个项目中,我使用javascript创建了一个随机数量的输入字段,其中输入字段具有maxlength=“1”,当用户用每个字母填充所有字段时,会出现一个submit按钮。 问题是,当一个字段被填充时,我希望光标移动到下一个输入字段。 我试图使用带有onkeyup事件的EventListener将此功能添加到输入元素中。 然而,当我在代码中实现这一点时,光标移动功能不能工作,当我检查页面时,我没有看到任何错误。

我的代码:https://jsfiddle.net/bill_sk/2t7vlc5y/2/

我会很感激你的帮助。 提前谢谢你。


共3个答案

匿名用户

请尝试“keyup”而不是“onkeyup”。 如果您正在处理类似的问题,请始终尝试找出代码的哪一部分不能与console.log()一起工作。还有一些其他错误,但这是可行的

elem.addEventListener("keyup" , evt => {
                
                        elem = evt.target
          if(elem.value.length >= elem.maxLength){
              let el = document.getElementById(parseInt(elem.id) +1)
              el.focus();

          }
    });

匿名用户

首先,您需要侦听keyup事件,而不是onkeyup事件

elem.addEventListener("keyup" , evt => {

然后获得下一个输入元素,如下所示

let el = document.getElementById(parseInt(elem.id) +1).focus();

匿名用户

inputLists.forEach(input => {
        input.addEventListener("keyup", ()=>{
        if(input.value.length === input.maxLength && parseInt(input.id) < inputLists.length) {
                  document.getElementById(parseInt(input.id)+1).focus();
        }
      })
    input.id将给您一个字符串,因此您必须将其解析为int.
  • 事件应为“keyup”,而不是“onkeyup”
  • 当您要向for循环中的下一个元素添加某些内容时,总是要查找数组中的最后一个元素
  • 使用您在函数顶部初始化的inputList变量,代码将更具可读性

快乐的编码!