Element动态表单中数组循环验证必填方法

  • 实用干货

  对于前端某个业务实体,可能需要在form表单内,动态生成一个数组类型的一组数据,要求对生成的每一组数据内容进行表单验证。例如动态添加人员,并对每个信息输入框进行表单验证。

  • 干货详细

  此次项目是使用vue3和elment-plus来实现动态表单验证

使用表单组件

<el-button size="small" class="adduse" type="primary" @click="handleAddUse">  添加处理人</el-button><el-form :model="state" ref="processorRef" size="default" label-width="80px"  class="pt15 pr15 pb15 pl15" :rules="processRules">  <div v-for="(item, index) in state.processor" style="margin-bottom: 40px">    <el-form-item label="办理人员" :prop="'processor.' + index + '.rule'"      :rules="processRules.rule">      <el-select v-model="item.rule" clearable placeholder="请选择">        <el-option v-for="item in data.ruleOptions" :key="item.label" :label="item.value"          :value="item.label" />      </el-select>    </el-form-item>    <el-form-item label="指定角色" :prop="'processor.' + index + '.rule_value'"      :rules="processRules.rule_value">      <el-cascader v-model="item.rule_value" :show-all-levels="false" :props="ruleProps"        :options="data.roleOptions" />    </el-form-item>    <el-form-item label="进入路径">      <el-select v-model="item.entry_path" clearable placeholder="请选择">        <el-option v-for="item in data.lineList" :key="item.id" :label="item.name"          :value="item.id" />      </el-select>      <el-button type="primary" link @click="deleteProcess(index)">        <el-icon>          <Delete />        </el-icon>      </el-button>    </el-form-item>  </div></el-form><el-form-item>  <el-button class="mb15" @click="onProcessedRefresh">    <SvgIcon name="ele-RefreshRight" />    重置  </el-button>  <el-button type="primary" class="mb15" @click="onProcessedSubmit()">    <SvgIcon name="ele-Check" />    保存  </el-button></el-form-item>

组件中绑定的数据,包括动态新增表单,删除表单,验证

<script setup lang='ts'>import { ref, reactive } from 'vue';// 验证规则const processRules = reactive({  rule: [{ required: true, message: "请选择", trigger: "blur" }],  rule_value: [{ required: true, message: "请选择", trigger: "blur" }],});// 添加处理人const handleAddUse = () => {  state.processor.push({    rule: '',    rule_value: [],    entry_path: ''  })}// 删除处理人const deleteProcess = (index: any) => {  state.processor.splice(index, 1)}// 处理人配置-保存验证const onProcessedSubmit = () => {  processorRef.value.validate((valid: boolean) => {    if (valid) {    } else {      return false;    }  });}</script>

这样我们就可以实现在动态表单验证必填了。

  • 结论

发布文章的初衷:

  • 打造一个专注于前端功能问题的问答平台,让大家高效搜索处理同样问题。

  • 遇到有共鸣的问题,与众多同行朋友们一起讨论,一起沉淀成长。

感谢大家关注从此让解决问题的你不再孤单!

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
如果您在使用 Element UI 表单组件进行数组嵌套校验时需要实现必填校验,可以使用自定义的校验函数。具体实现步骤如下: 1. 在表单使用 `el-form-item` 包裹需要校验的表单项,并为其添加 `prop` 属性,例如: ```html <el-form-item label="嵌套数组" prop="nestedArray"> <!-- 嵌套数组表单项 --> </el-form-item> ``` 2. 在自定义的校验函数,对嵌套的数组对象进行遍历,并对每个对象的属性进行必填校验,例如: ```js import { validateNestedArray } from '@/utils/validate' export default { data() { return { nestedArray: [ { name: '', age: '', gender: '' }, { name: '', age: '', gender: '' }, { name: '', age: '', gender: '' } ] } }, methods: { validate() { return this.$refs.form.validate() }, validateNestedArray(rule, value, callback) { if (!value) { callback(new Error('嵌套数组不能为空')) } else { for (let i = 0; i < value.length; i++) { const nestedObj = value[i] if (!nestedObj.name || !nestedObj.age || !nestedObj.gender) { callback(new Error(`第 ${i + 1} 个对象的所有属性均为必填项`)) return } } callback() } } } } ``` 3. 在 `el-form` 添加 `rules` 属性,并将自定义的校验函数作为校验规则,例如: ```html <el-form ref="form" :model="form" :rules="rules"> <!-- 表单项 --> </el-form> ``` ```js import { validateNestedArray } from '@/utils/validate' export default { data() { return { form: { nestedArray: [ { name: '', age: '', gender: '' }, { name: '', age: '', gender: '' }, { name: '', age: '', gender: '' } ] }, rules: { nestedArray: [ { validator: validateNestedArray, trigger: 'blur' } ] } } }, methods: { validate() { return this.$refs.form.validate() }, validateNestedArray(rule, value, callback) { // 校验函数实现 } } } ``` 通过以上步骤,就可以实现 Element UI 表单组件数组嵌套校验,具体的实现细节可以根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员树朦

您的鼓励将是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值