【问题标题】:Vue put focus on an input via refsVue 通过 refs 将焦点放在输入上
【发布时间】:2023-03-08 10:24:01
【问题描述】:

我使用 v-for 为列表中的每个项目创建输入,我通过以下方式分配 ref

:ref="`input-${index}`"

这让我的 $refs 看起来像这样

现在我的问题是;在添加输入时,我还想将重点放在最后一个输入上,但是我无法使其工作。

现在我尝试了这样的事情,

this.$refs["input-" + index.toString()].focus()

但是我觉得这与我不知道如何处理的 refs 的结构有关。

有谁知道我如何访问每个输入以及如何聚焦它(我猜只是 .focus())。

【问题讨论】:

    标签: javascript vue.js input focus ref


    【解决方案1】:

    您似乎在 v-for 循环中使用 ref,在这种情况下,建议在包含 v-for 指令的根元素中使用 ref,如下所示:

     <input v-for="(item, index) in items" ref="inputs" .../>
    

    这将创建一个引用元素的数组,您可以像这样使用它们:

     this.$refs.inputs[someIndex].focus()
    

     this.$refs.inputs[this.$refs.inputs.length-1].focus() // focus on the last input
    

    【讨论】:

    • 嘿@Boussadjra
    • @Amaarrockz 你好,我的朋友
    • 我试过这个,我仍然得到“TypeError:无法读取未定义的属性(读取'焦点')”。我不知道这很重要,但是除了输入之外,我在 v-for 中还有更多内容
    • 你在哪里调用那个焦点函数以及你如何定义参考
    • 我将 ref="inputs" 放在带有 v-for 的元素上,并像这样调用焦点:this.$refs.inputs[this.inputs.length - 1].focus()。我在将一个空字符串推送到输入数组后调用它,这会产生一个新的输入元素。对我来说,这似乎正是你的意思。然而,我认为可能是一个问题,带有 v-for 的元素包含多个元素(离子标签、离子输入和离子图标)
    【解决方案2】:

    所以我不再确切知道了,但我记得问题在于我将重点放在离子项目而不是离子输入上。我需要添加 .children[i] (我取决于它是什么孩子)。这让我可以把重点放在输入上:)

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 1970-01-01
      • 2020-07-04
      • 2017-05-15
      • 2018-03-25
      • 2020-05-15
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多