粘贴可用的element-ui validateField局部校验
正文
element-ui的表单提交基本每个项目都会使用到,其中针对特定区域的值进行校验的场景也不少,其文档相对简单,下面就贴上代码,复制粘贴到一个.vue文件即可运行。
场景:人员信息录入时,表单可以就其中某一行进行保存,也可创建多个后批量保存,保存时如果信息不全会只针对当前行进行校验。

1、template
<template>
<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="80px">
<div
v-for="(domain, index) in dynamicValidateForm.domains"
:key="index"
class="form-item"
>
<el-form-item>
{{ index + 1 }}
</el-form-item>
<el-form-item
label="姓名"
size="mini"
:prop="'domains.' + index + '.name'"
:rules="{
required: true,
message: '姓名不能为空',
trigger: 'blur',
}"
>
<el-input v-model="domain.name"></el-input>
</el-form-item>
<el-form-item
label="年龄"
size="mini"
:prop="'domains.' + index + '.age'"
:rules="{
required: true,
message: '年龄不能为空',
trigger: 'blur',
}"
>
<el-input v-model="domain.age"></el-input>
</el-form-item>
<el-form-item
label="地址"
size="mini"
:prop="'domains.' + index + '.address'"
:rules="{
required: true,
message: '地址不能为空',
trigger: 'blur',
}"
>
<el-input v-model="domain.address"></el-input>
</el-form-item>
<el-form-item
label="手机"
size="mini"
:prop="'domains.' + index + '.phone'"
:rules="{
required: true,
message: '手机不能为空',
trigger: 'blur',
}"
>
<el-input v-model="domain.phone"></el-input>
</el-form-item>
<el-form-item>
<el-button size="mini" type="primary" @click="saveCurrentData(domain, index)"
>保存</el-button
>
</el-form-item>
</div>
<el-form-item class="form-footer">
<el-button type="primary" size="mini" @click="submitForm('dynamicValidateForm')"
>全部保存</el-button
>
<el-button size="mini" @click="resetForm('dynamicValidateForm')">重置</el-button>
</el-form-item>
</el-form>
</template>
2、script
<script>
export default {
data() {
return {
dynamicValidateForm: {
domains: [],
},
};
},
created() {
const item = {
name: "",
age: "",
address: "",
phone: "",
};
for (let i = 0; i < 5; i++) {
this.dynamicValidateForm.domains.push(Object.assign({}, item));
}
},
methods: {
// 定义局部校验函数
validateFn(domain, index) {
let validateFieldArr = ["name", "age", "address", "phone"];
return new Promise((resolve, reject) => {
for (let item of validateFieldArr) {
this.$refs.dynamicValidateForm.validateField(
`domains.${index}.${item}`,
(err) => {
if (err) {
return reject(err); // 失败返回err
}
resolve(true); // 成功返回true
}
);
}
});
},
async saveCurrentData(domain, index) {
const validateResult = await this.validateFn(domain, index);
if (validateResult) {
console.log("-------校验通过啦------");
}
},
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert("submit!");
} else {
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
},
};
</script>
3、style
<style>
.form-item {
display: flex;
}
.form-footer {
display: flex;
justify-content: center;
}
</style>以上就是粘贴可用element-ui中validateField局部校验的详细内容,更多关于element-ui validateField局部校验的资料请关注脚本之家其它相关文章!
相关文章
详解从vue-loader源码分析CSS Scoped的实现
这篇文章主要介绍了详解从vue-loader源码分析CSS Scoped的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-09-09
Vue element-UI el-select循环选中的问题
这篇文章主要介绍了Vue element-UI el-select循环选中的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-10-10
elementui之el-table如何通过v-if控制按钮显示与隐藏
这篇文章主要介绍了elementui之el-table如何通过v-if控制按钮显示与隐藏问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-11-11
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
今天小编就为大家分享一篇vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-09-09
vue+elementUI组件递归实现可折叠动态渲染多级侧边栏导航
这篇文章主要介绍了vue+elementUI组件递归实现可折叠动态渲染多级侧边栏导航,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-04-04
vue+elementUI-el-table实现动态显示隐藏列方式
这篇文章主要介绍了vue+elementUI-el-table实现动态显示隐藏列方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-01-01


最新评论