通过v-show显示后,将注意力集中在输入上

时间:2017-08-22 18:43:09

标签: javascript vue.js vuejs2

我有一个简单的表单,在使用v-show加载页面时会隐藏。我希望在显示之后关注输入。我有一个按钮来调用一个显示表单的方法,并使用以下代码将焦点设置为输入:

    this.newQuestion = true; //(Form whit v-show:newQuestion)
    this.$refs.questionInput.focus();

问题是表单显示正确,但是第一次按下按钮时输入没有聚焦,如果我在表单处于页面工作状态时第二次按下它。我想知道是否有办法做到这一点,谢谢。

2 个答案:

答案 0 :(得分:10)

之前我遇到过类似的问题,我使用Vue的focus方法强制更新(在您的情况下为nextTick),这是在您将一些数据更改为等待DOM更新。:

this.$nextTick(() => {
    this.$refs.questionInput.focus();
})

答案 1 :(得分:0)

试试这个:

var me = this;
Vue.nextTick(function() {
  me.$refs.questionInput.focus();
});