如图表格:

想要从第一列先校验,再第二列,再第三列
而不是一下子将所有列都检验了
下午好🌅🌅🌅
本答案参考通义千问
在使用 el-table(Element UI 的表格组件)时,如果你希望逐列进行校验(即:先校验第一列,确认无误后再校验第二列,依此类推),而不是一次性校验所有列,可以通过以下方式实现:
el-table 默认的校验逻辑是整行提交校验,即点击“保存”或“提交”时,对整行数据进行校验。el-form 和 el-table 配合el-table 放入 el-form 中,并为每一列设置 prop 属性。ref 获取表单引用,通过 validateField 方法逐个校验字段。<template>
<el-form ref="formRef" :model="tableData" :rules="rules">
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="name" label="姓名" width="180"></el-table-column>
<el-table-column prop="age" label="年龄" width="180"></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
</el-table>
<el-button @click="validateColumns">逐列校验</el-button>
</el-form>
</template>
<script>
export default {
data() {
return {
tableData: [
{ name: '', age: '', address: '' },
{ name: '张三', age: '25', address: '北京' }
],
rules: {
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
],
age: [
{ required: true, message: '请输入年龄', trigger: 'blur' },
{ type: 'number', message: '年龄必须为数字', trigger: 'blur' }
],
address: [
{ required: true, message: '请输入地址', trigger: 'blur' }
]
},
currentColumnIndex: 0,
columnProps: ['name', 'age', 'address']
};
},
methods: {
validateColumns() {
this.currentColumnIndex = 0;
this.validateNextColumn();
},
validateNextColumn() {
if (this.currentColumnIndex >= this.columnProps.length) {
console.log('所有列校验完成');
return;
}
const prop = this.columnProps[this.currentColumnIndex];
this.$refs.formRef.validateField(prop, (errorMessage) => {
if (errorMessage) {
console.error(`第 ${this.currentColumnIndex + 1} 列校验失败:`, errorMessage);
} else {
console.log(`第 ${this.currentColumnIndex + 1} 列校验通过`);
}
// 移动到下一列
this.currentColumnIndex++;
this.validateNextColumn();
});
}
}
};
</script>
validateField(prop) 是 el-form 提供的方法,可以单独校验某一字段。columnProps 数组用于记录你希望按顺序校验的字段名。currentColumnIndex 控制当前校验的是哪一列。validateNextColumn() 是一个递归函数,逐个调用 validateField 来实现逐列校验。el-form,而是直接绑定在 el-table 上,那么你需要将数据包裹在 el-form 内部,或者使用自定义校验逻辑。@input 或 @blur 事件中调用 validateField。实现逐列校验的关键在于使用
el-form.validateField(prop)并按顺序调用。
| 步骤 | 功能 |
|------|------|
| 1 | 将 el-table 数据绑定到 el-form |
| 2 | 为每一列设置 prop 属性 |
| 3 | 使用 validateField 逐个校验字段 |
| 4 | 通过递归或循环实现逐列校验逻辑 |
如需进一步支持输入时自动校验或错误提示高亮,也可以结合 el-input 的 @blur 事件和 el-form 的校验机制来实现。