el-form 中的数组表单验证(数组可动态添加删除)

除了一些简单的表单验证之外,我们还会有一些稍微复杂点的多层级表单的验证,如下图所示可点击添加,删除对数组进行操作,当点击确定时需要验证每一条form-item不能为空
在这里插入图片描述
tempalte部分主要代码如下所示:

<el-form :model="form" ref="cardForm" :rules="rules" label-position="top" >
		<el-form-item v-for="(item, index) in form.CARD_RIGHTS_LIST" :label="'卡权益' + (index+1)" :key="index" :prop="`CARD_RIGHTS_LIST.${index}.RIGHT_NAME`" :rules="{required: true, message: `请输入信用卡权益${index+1}`, trigger: ['change']}">
		   <el-col :span="20">
		   		<el-input v-model=" item.RIGHT_NAME" :maxlength="20" placeholder="请输入信用卡权益" clearable show-word-limit></el-input>
		   </el-col>
		   <el-col :span="4" style="text-align: right;">
		  		<el-button v-if="form.CARD_RIGHTS_LIST.length > 1" icon="el-icon-delete" type="danger" plain @click.prevent="handleRemoveValue(index)">删除</el-button>
		  	</el-col>
		</el-form-item>
		<el-form-item v-if="form.CARD_RIGHTS_LIST.length < max" class="last">
		   <div class="et-tag__button--add" @click="handleAddValue"><img :src="tagAddIcon" width="16px" height="16px" alt="">添加(最多{{max}}条)</div>
		</el-form-item>
</el-form>
<el-form-item class="product-form__footer last" label="">
    <el-button class="et-button" type="primary" @click="submitForm(form)">确认</el-button>
</el-form-item>

data部分代码如下:

form:{
          CARD_RIGHTS_LIST:[{ID:'',RIGHT_NAME:''}],
        },

methods部分如下:

//添加form-item
handleAddValue() {
        this.form.CARD_RIGHTS_LIST.push({ID:'',RIGHT_NAME:""})
      },
//删除form-item
handleRemoveValue(index) {
        this.form.CARD_RIGHTS_LIST.splice(index, 1)
      },
//提交form并且验证
submitForm() {
        this.$refs.cardForm.validate((valid) => {
          if (valid) {
            this.$message.info("操作成功");
           //此处加入自己需求
        } else {
          //此处加入自己需求
        }
          } else {
            this.$message.info("请完善信息");
            return ;
          }
        });
      },

以上仅展示此处对应的需求代码,可直接根据自己的需求进行修改即可实现此功能

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用 Element UI 的 `el-form` 组件来验证数组是否为空,您可以使用自定义校验规则。以下是一个示例代码: ```html <template> <el-form ref="myForm" :model="form" :rules="rules" label-width="120px"> <el-form-item label="数组选项" prop="arrayOptions"> <el-select v-model="form.arrayOptions" multiple placeholder="请选择"> <el-option label="选项1" value="option1"></el-option> <el-option label="选项2" value="option2"></el-option> <el-option label="选项3" value="option3"></el-option> </el-select> </el-form-item> <el-button type="primary" @click="validateForm">提交</el-button> </el-form> </template> <script> export default { data() { return { form: { arrayOptions: [] }, rules: { arrayOptions: [ { type: 'array', required: true, message: '请选择至少一个选项', trigger: 'blur' } ] } }; }, methods: { validateForm() { this.$refs.myForm.validate(valid => { if (valid) { alert('表单验证通过'); } else { alert('表单验证失败'); } }); } } }; </script> ``` 在上面的示例,我们通过 `ref` 属性给 `el-form` 组件命名为 `"myForm"`,并定义了一个名为 `"form"` 的数据对象,其包含了一个数组类型的属性 `"arrayOptions"`。我们还定义了一个名为 `"rules"` 的规则对象,其 `"arrayOptions"` 属性的规则指定了该字段为数组类型,且必填。 在提交按钮的点击事件,我们通过 `this.$refs.myForm.validate` 方法来触发表单验证。如果验证通过,弹出提示 "表单验证通过";如果验证失败,弹出提示 "表单验证失败"。 通过这种方式,您可以使用 `el-form` 组件来验证数组是否为空。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值