Vue3 使用 el-form 嵌套 el-table 进行单条数据的表单校验
在Vue 3中,您可以使用el-form
组件来对嵌套在其中的el-table
中的单条数据进行表单验证。以下是一个简单的例子,展示如何实现这一功能:
<template>
<el-form :model="form" ref="formRef" label-width="120px">
<el-form-item label="用户信息">
<el-table :data="form.users" style="width: 100%">
<el-table-column prop="name" label="姓名" width="180">
</el-table-column>
<el-table-column prop="email" label="邮箱" width="180">
<template #default="{ row }">
<el-form-item :prop="`users[${row.$index}].email`" :rules="rules.email">
<el-input v-model="row.email"></el-input>
</el-form-item>
</template>
</el-table-column>
<!-- 其他列 -->
</el-table>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</template>
<script setup>
import { reactive, ref } from 'vue';
import { ElMessage } from 'element-plus';
const formRef = ref(null);
const form = reactive({
users: [
{ name: '张三', email: '' },
// 其他用户数据
],
});
const rules = {
email: [
{ required: true, message: '请输入邮箱地址', trigger: 'blur' },
{ type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
],
};
const submitForm = () => {
formRef.value.validate((valid) => {
if (valid) {
ElMessage.success('提交成功');
} else {
ElMessage.error('表单验证失败');
return false;
}
});
};
</script>
在这个例子中,el-form
嵌套了一个el-table
用于展示用户信息。每行表单数据中的邮箱字段都被el-form-item
包裹,并设置了验证规则。当用户尝试提交表单时,会触发表单验证,如果任何一个邮箱字段验证失败,则不允许提交。
评论已关闭