el-form嵌套el-table在表格中实现输入并设置校验
在Vue.js中,使用Element UI库,可以在el-form
中嵌套el-table
,并在el-table
的单元格中实现输入并设置验证。以下是一个简单的例子:
<template>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="用户信息">
<el-table :data="form.users" style="width: 100%;">
<el-table-column prop="name" label="姓名" width="180">
<template slot-scope="scope">
<el-form-item :prop="'users[' + scope.$index + '].name'" :rules="rules.name">
<el-input v-model="scope.row.name"></el-input>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="age" label="年龄" width="180">
<template slot-scope="scope">
<el-form-item :prop="'users[' + scope.$index + '].age'" :rules="rules.age">
<el-input type="number" v-model.number="scope.row.age"></el-input>
</el-form-item>
</template>
</el-table-column>
</el-table>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('form')">提交</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
form: {
users: [
{ name: '', age: null },
// 可以添加更多用户
]
},
rules: {
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
],
age: [
{ required: true, message: '请输入年龄', trigger: 'blur' },
{ type: 'number', message: '年龄必须是数字值', trigger: 'blur' }
]
}
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('提交成功!');
} else {
console.log('验证失败');
return false;
}
});
}
}
};
</script>
在这个例子中,el-form
包含了一个el-table
,el-table
中的每一行都可以输入姓名和年龄。在el-form-item
中使用v-model
绑定表格单元格的输入值,并通过:prop
和:rules
属性设置验证规则。当用户点击提交按钮时,会触发表单验证。如果验证通过,会弹出提示框表示成功,如果验证失败,则在控制台输出验证失败信息。
评论已关闭