gpt4 book ai didi

javascript - Vue v-for 在新文本区域上自动对焦

转载 作者:行者123 更新时间:2023-12-03 00:30:59 25 4
gpt4 key购买 nike

我正在制作一个博客,希望用户在按 Enter 键时能够创建新的文本区域,并使其自动聚焦于新创建的文本区域。我尝试过使用自动对焦属性,但这不起作用。我也尝试过使用 nextTick 函数,但这不起作用。我该怎么做?

<div v-for="(value, index) in content">
<textarea v-model="content[index].value" v-bind:ref="'content-'+index" v-on:keyup.enter="add_content(index)" placeholder="Content" autofocus></textarea>
</div>

add_content()定义如下:

add_content(index) {
var next = index + 1;
this.content.splice(next, 0, '');
//this.$nextTick(() => {this.$refs['content-'+next].contentTextArea.focus()})
}

最佳答案

您的路径是正确的,但是 this.$refs['content-'+next] 返回一个数组,因此只需访问第一个数组并调用 .focus() 在那

add_content(index) {
var next = index + 1;
this.content.splice(next, 0, {
value: "Next"
});
this.$nextTick(() => {
this.$refs["content-" + next][0].focus();
});
}

工作示例

var app = new Vue({
el: '#app',
data() {
return {
content: [{
value: "hello"
}]
};
},
methods: {
add_content(index) {
var next = index + 1;
this.content.splice(next, 0, {
value: "Next"
});
this.$nextTick(() => {
this.$refs["content-" + next][0].focus();
});
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">
<div v-for="(value, index) in content">
<textarea v-model="content[index].value" v-bind:ref="'content-' + index" v-on:keyup.enter="add_content(index);" placeholder="Content" autofocus></textarea>
</div>
</div>

此外,数组中的值似乎是一个对象而不是字符串,因此 splice 是一个对象而不是空字符串

关于javascript - Vue v-for 在新文本区域上自动对焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com