element ui 使用form表单自定义校验方式 传参,传参校验在后面 往后翻

文章介绍了在Element-UI框架中使用表单进行数据验证的方法,包括常规的验证规则设置和自定义验证函数的实现。在常规验证中,通过`:rules`属性绑定校验规则。自定义验证时,可以将参数传递给验证函数,如`dicRulesVailFn`,该函数返回一个包含验证逻辑的对象,用于处理更复杂的场景,如限制输入值的范围和格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、常规校验,不传参

element ui form表单中给出的实例,以及常规的自定义校验方式

<el-form inline :model="form1" :rules="rules" ref="fules">
  <el-table v-if="form1.skuArr" :data="form1.skuArr" stripe border tooltip-effect="dark" style="width: 100%">
    <el-table-column label="购买数量限定" align="center" width="180">
      <template slot-scope="scope">
        <el-form-item :label-width="formLabelWidth" :prop="`skuArr[${scope.$index}].numLimit`" :rules="fules">
          <el-input-number v-model="form1.skuArr[scope.$index].numLimit" size="small" :min="0" :max="form1.skuArr[scope.$index].stock" placeholder="输入数字"  @change="changNum(scope.$index)">
          </el-input-number>
        </el-form-item>
      </template>
    </el-table-column>
  </el-table>
</el-form>

常规的自定义校验方式如 上边 代码中的 :rules=“fules”

在data中定义fules 的校验规则 例如:

 data() {
	return {
	     fules:{required:true, validator:this.validateNum1,type:'number'},
	}
 },
 methods:{
 	var validateNum1 = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('不能为空'));
      } else if (isNaN(Number(value))) {
        callback(new Error('请输入数字'));
      } else if (Number(value) <= 0 ) {
        callback(new Error('请输入大于0的数字'));
      } else {
        callback();
      }
    };
 }

二、自定义校验,传参

自定义校验规则传参,比如想要传入下标可以按照(促销价(元)的校验规则进行传递) :rules=“dicRulesVailFn(form1.skuArr[scope.$index])”

<el-form inline :model="form1" :rules="rules" ref="fules">
  <el-table v-if="form1.skuArr" :data="form1.skuArr" stripe border tooltip-effect="dark" style="width: 100%">
    <el-table-column label="促销价(元)" align="center" width="180">
      <template slot-scope="scope">
       <el-form-item :label-width="formLabelWidth" :prop="`skuArr[${scope.$index}].actMoney`" :rules="dicRulesVailFn(form1.skuArr[scope.$index])">
          <el-input v-model="form1.skuArr[scope.$index].actMoney" size="small" :min="0" :max="form1.skuArr[scope.$index].goodPrice" placeholder="输入数字"  @change="changLimite(scope.$index,2)">
          </el-input>
        </el-form-item>
      </template>
    </el-table-column>
  </el-table>
</el-form>

相当于rules 接收了一个函数,所以必须要return 一个值返回回去,参照上边自定义校验规则的常规写法
函数
函数可以这样写把关键参数都返回过去,

methods(){
	dicRulesVailFn(row){
      var regex = /^\d{1,9}(\.\d{0,2})?$/;
      return [{
        required: true,
        validator: (rule, value, callback) => {
          if(!value){
            callback(new Error("不能为空!"));
          }else if(+value>row.goodPrice){
            callback(new Error('金额不能大于商品原价!'));
          }else if(+value<=0 ){
            callback(new Error('不能小于等于0'));
          }else if(!regex.test(value)){
            callback(new Error("最多保留2位小数"));
          } else {
            callback();
          }
        }, trigger: 'change'
      }]
    },
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值