<template>
<div class="block">
<el-form :model="formData" ref="formData">
<el-table :data="formData.tableData" border stripe style="width: 100%;">
<el-table-column prop="name" label="姓名">
<template slot-scope="scope">
<el-form-item v-if="scope.row.edit" :prop="'tableData.' + scope.$index + '.name'" :rules='rules.name'>
<el-input v-model="scope.row.name" placeholder="姓名"></el-input>
</el-form-item>
<span v-else>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column prop="sex" label="性别">
<template slot-scope="scope">
<el-form-item v-if="scope.row.edit" :prop="'tableData.' + scope.$index + '.sex'" :rules='rules.sex'>
<el-select v-model="scope.row.sex" placeholder="请选择">
<el-option label="男" value="1">男</el-option>
<el-option label="女" value="2">女</el-option>
</el-select>
</el-form-item>
<span v-else>
<p v-if="scope.row.sex==1">男</p>
<p v-if="scope.row.sex==2">女</p>
</span>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button v-if="scope.row.edit" type="text" size="medium" @click="confirmAdd(scope.row,'formData')">
<i class="el-icon-check" aria-hidden="true"></i>
</el-button>
<div v-else>
<el-button type="text" size="medium" @click="editData(scope.row)">
<i class="el-icon-edit" aria-hidden="true"></i>
</el-button>
<el-button type="text" size="medium" @click="deleteData(scope.row,scope.$index)">
<i class="el-icon-delete" aria-hidden="true"></i>
</el-button>
</div>
</template>
</el-table-column>
</el-table>
</el-form>
<el-button type="text" @click="addData">添加数据</el-button>
<el-divider></el-divider>
<el-button @click="submitData('formData')">提交 </el-button>
</div>
</template>
<script>
export default {
// https://blog.csdn.net/weixin_43753330/article/details/89963135
name: "demo",
data() {
return {
formData: {
tableData: [],
},
rules: {
name: {
required: true,
message: '请输入名字',
},
sex: {
required: true,
message: '请选择性别',
},
},
}
},
methods: {
//添加
addData() {
this.formData.tableData.push({
edit: true,
});
},
//确认添加
confirmAdd(row, formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
row.edit = false;
}
})
},
//修改
editData(row) {
row.edit = true;
},
//删除
deleteData(row, index) {
this.formData.tableData.splice(index, 1);
},
submitData(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
let data = this.formData.tableData;
console.log
alert(JSON.stringify(data))
}
})
}
}
}
</script>
vue表格添加输入框,带验证,新增删除
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 时隔一年再次接触vue,并完整的实现了一个简单的demo,想想去年暑假自己学的东西都变得非常非常的陌生,仿佛就没有...
- 首先将基本的DOM内容写出,再进行JS的相关操作 HTML与CSS样式内容写完后,我们来写js内容,如果要将js内...
- 1.控制输入位数 限制输入为10位,这种方式可以使输入框中输入10位后不能输入后续内容因为number输入框自动将...