element UI form表单自定义校验 callback无效

<el-form-item
    v-else
     :key="formList.nationalType"
     label="销售价:"
     prop="multistage_price"
     :rules="[{ validator: multistagePriceRule2 }]"	//	自定义校验
   >

问题是当把下面的代码用方法封装一下callback,循环value这个数组去调用的话,callback无效

最终解决的代码,手动一行行自己展开写

multistagePriceRule2(rule, value, callback) {
      if (!value.length) {
        return callback(new Error('销售价必填'))
      } else if (value[0].min_num <= 0) {
        return callback(new Error('起批量必须大于0'))
      } else if((value[0].min_num % 1 != 0) || value[0].min_num == 0 ) {
        return callback(new Error('起批量必须是大于0的正整数'))
      } else if (value[0].price <= 0) {
        return callback(new Error('销售价必须大于0'))
      } else if (value[0].price.split(".")[1] && value[0].price.split(".")[1].length > 2) {
        return callback(new Error('请保留小数位数为两位数'))
      } else if (value[1] && value[1].min_num <= 0) {
        return callback(new Error('起批量必须大于0'))
      } else if(value[1] && ((value[1].min_num % 1 != 0) || value[1].min_num == 0) ) {
        return callback(new Error('起批量必须是大于0的正整数'))
      } else if (value[1] && value[1].price <= 0) {
        return callback(new Error('销售价必须大于0'))
      } else if (value[1] && value[1].price.split(".")[1] && value[1].price.split(".")[1].length > 2) {
        return callback(new Error('请保留小数位数为两位数'))
      } else if (value[2] && value[2].min_num <= 0) {
        return callback(new Error('起批量必须大于0'))
      } else if(value[2] && ((value[2].min_num % 1 != 0) || value[2].min_num == 0) ) {
        return callback(new Error('起批量必须是大于0的正整数'))
      } else if (value[2] && value[2].price <= 0) {
        return callback(new Error('销售价必须大于0'))
      } else if (value[2] && value[2].price.split(".")[1] && value[2].price.split(".")[1].length > 2) {
        return callback(new Error('请保留小数位数为两位数'))
      } else {
        callback()
      }
    },

效果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI中,可以通过自定义校验规则来实现对组件输入内容进行校验。对于子组件,也可以使用Element UI自定义校验功能来实现。 首先,我们需要在父组件中创建一个自定义校验的方法,该方法会作为参数传递给子组件。例如,在父组件中创建一个名为"validateForm"的方法: ``` methods: { validateForm(rule, value, callback) { // 自定义校验规则 // 如果校验通过,调用 callback() 方法,传递一个 undefined 作为参数 // 如果校验不通过,调用 callback(new Error('校验不通过的提示信息')) } } ``` 接下来,在父组件中使用子组件时,可以通过传递自定义校验方法给子组件的prop来实现自定义校验功能。例如: ``` <template> <div> <ChildComponent :validate="validateForm"></ChildComponent> </div> </template> ``` 在子组件中,可以通过props接收父组件传递过来的自定义校验方法: ``` props: { validate: { type: Function, required: true } } ``` 然后,在子组件相关的表单元素中,通过调用父组件传递过来的自定义校验方法来实现校验。例如,在子组件的模板中的 `<el-form-item>` 组件中使用自定义校验方法: ``` <el-form-item prop="字段名" :rules="[{ validator: validate }]"> <el-input v-model="data"></el-input> </el-form-item> ``` 这样,当输入内容发生变化时,将会调用父组件传递的自定义校验方法,实现对子组件的校验功能。 以上就是在Element UI中,如何在子组件中使用自定义校验的方法实现校验的介绍。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值