javascript - 视觉 : Set focus to dynamic input box

标签 javascript html vue.js vuejs2

我有一个表单,用户可以在其中填写一个电子邮件地址,然后单击它旁边的加号按钮来创建一个新地址。这些输入框是通过遍历数组生成的。当用户单击 + 图标时,一个新条目将被推送到该数组。

现在新文本框生成正常,但我希望光标聚焦在这个文本框上。

enter image description here

最佳答案

@ramakant-mishra 告诉您必须使用 this.$refs,但您还需要在输入元素上动态添加 ref 属性。让我告诉你:

new Vue({
  el: '#app',
  data: {
    emails:[]
  },
  methods: {
    add: function (e) {
      let j = this.emails.push("")
      this.$nextTick(() => {
        this.$refs[`email${j - 1}`][0].focus()
      })
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
  <div v-for="(email, i) in emails" :key="i">
    <input v-model="email" :ref="`email${i}`" />
  </div>
  <button @click="add">add</button>
</div>

只是不要忘记使用 $nextTick 因为新元素还没有在模板上呈现

关于javascript - 视觉 : Set focus to dynamic input box,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59749325/

相关文章:

html - 如何同时滑动图片和文字

html - CSS - 将文本阴影与文本轮廓结合起来?

vue.js - 在类星体输入中只允许最多一位小数的数字

webpack - aspnet core 如何在部署时构建 webpack

javascript - 在 .eslintrc 中为 @babel/eslint-parser 声明 babel 插件

javascript - 适用于 Node.js 的 AWS 开发工具包

javascript - ionic 登录(AngularJS)+本地存储问题

javascript - 右滑 react native 删除列表项

javascript - 如何在 css 关键帧中存储内容或元数据?

vue.js - 为什么 Vue 不渲染这个空间?一个错误?