JS

多个input框自动获取焦点

填写完一个input焦点自动跳到下一个

Posted by Ayi on December 25, 2018

应用场景

有很多input框需要用户填写,需要做到当用户填写完其中一个,自动跳到下一个不为空的input框里,比如一些登录页面或者表单的填写。同理可以扩展到很多自动跳转的标签上,但是这里只展示input的写法

代码实现

    // 遍历所有的input判断是否为空
    handleJudgeInput () {
      let inputRoute = document.getElementById('inputroute')
      let input = inputRoute.getElementsByTagName('input')
      // console.log(input)
      for (let i = 0; i < input.length; i++) {
        // console.log(input[i].value)
        if (input[i].value === '') {
          // console.log(i, input[i])
          // 获取焦点
          this.$nextTick(() => {
            input[i].focus()
          })
          return false
        } else if (i === input.length - 1) {
          // 所有input框已经填完
        } else {
          continue
        }
      }
    },

实现思路

我将所有的input框写在一个id为inputroute的div里,因此我首先获取到这个div,再获取里面所有的input标签,getElementsByTagName返回的是一个数组,然后遍历数组,如果input的value属性为空,则用focus方法让其获取焦点。