javascript - 更改 CSS 会破坏 Javascript Focus() 方法

标签 javascript html css vue.js

我有一个输入字段,带有一个编辑按钮,每当我按下编辑按钮时,我的 javascript 就会像这样关注输入字段:

http://jsfiddle.net/b8bm9w7n/

接下来我想隐藏输入字段以动态显示,使用 CSS,通过使用 Vue v-class 指令,这也可以正常工作:

http://jsfiddle.net/b8bm9w7n/1/

我唯一更改的是 .editInputField 类中的 CSS 从显示 block 不显示

.editInputField {
    display: none;
}

.show {
    display: block;
}

现在 Inputfield 动态显示,但 focus() 不起作用,我不知道为什么。有人有什么建议吗?

对于任何喜欢 CodePen 的人:

工作示例:http://codepen.io/anon/pen/Jdgozw

非工作示例:http://codepen.io/anon/pen/BNXyEz

最佳答案

您需要将 focus() 调用放在 $nextTick 处理程序中,因为(在生产模式下)对 DOM 的更改通常在模型变化。

这是一个可用的更新版 CodePen:

http://codepen.io/anon/pen/RPXNXN

关键的变化是:

        editTask: function (that) {
            this.editedTodo = that.todo;

            this.$nextTick(function () {
              that.$$.editInputField.focus();
            });
        },

有关$nextTick 的更多信息,请参阅:http://vuejs.org/api/instance-methods.html

关于javascript - 更改 CSS 会破坏 Javascript Focus() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32167791/

相关文章:

jQuery 未在本地主机页面上加载

javascript - JQuery Mobile ListView 消失

javascript - 将外部 javascript 文件包含到 html 中的不同方法有哪些?

javascript - 正则表达式-仅匹配正斜杠和数字(用于日期)

javascript - 使用 jQuery 使 div 值在使用 $(this) 的地方上升或下降

css - HTML 表格的水平滚动条

javascript - 将 ID 放在 DOM 元素上以实现自动化是不是错误的,因为它会将它们的 CSS 类变成单例?

javascript - 光滑 slider : Get rid of partial/edge images in centerMode

javascript - js 代码不能作为单独的文件在 html 中工作(无 jQuery)

HTML5 文档 uploader 和查看器