暂时先不考虑v-for的key,查看下面的代码
[JavaScript] 纯文本查看 复制代码
<template>
<div>
<form @submit.prevent="addTask">
<span>请输入待办事项:</span>
<input type="text" placeholder="请输入..." v-model="text" @keyup.enter="addTask">
<button class="btn">确定</button>
</form>
<ol>
<li v-for="(item,index) in arr" :key="index">{{item}} <a href="JavaScript:;" @click="del(index)">删除</a> </li>
</ol>
</div>
</template>
<script>
export default {
name: "HelloWorld",
data() {
return {
arr:[],
text:''
};
},
methods: {
addTask(){
this.arr.push(this.text);
this.text = '';
console.log(1);
},
del(index){
this.arr.splice(index,1);
}
},
};
</script>
<style scoped>
.btn{
margin: 0 10px 0 10px;
vertical-align:middle
}
</style>
结果就是,当在input框输入完内容后按下回车,回调函数会被执行两次
但是使用点击事件,点击确定按钮,回调函数只会执行一次
问题就在于标红的form表单的submit事件点击回车键会触发form表单提交,(自己的理解)解决方案:就是不给input添加键盘事件,form表单自带键盘事件(网上查的),哈哈哈服了
|