iview-Form表单校验自定义检验规则

HTML部分

<Form ref="refForm" :model="formItem" :rules="ruleForm" :label-width="100">
     <FormItem label="提取金额(本人):" prop="tqjebr">
         <InputNumber type="number" :min="1" :max="99999999" v-model="formItem.tqjebr" :disabled="disBr"></InputNumber>
     </FormItem>
     <FormItem label="提取金额(配偶):" prop="tqjepo">
         <InputNumber type="number" :min="1" :max="99999999" v-model="formItem.tqjepo" :disabled="disPo"></InputNumber>
     </FormItem>
 </Form>

js部分(重点来了)

1.自定义校验规则

data函数里,return 外,自定义函数并赋予名称

  • rule,正则表达式
  • value,当前文本框的值
  • callback,函数回调
data(){
        //本人提取金额校验
        const brtqjeCheck = async(rule, value, callback) => {
            if(this.formItem.tqjebr > this.jkrye){
                this.yhkkjeShow = false
                return callback(new Error('提取金额不能高于公积金余额'));
            }else if(!this.disBr && this.formItem.tqjebr == this.jkrye){
                this.yhkkjeShow = false
                return callback(new Error('公积金不能全部提取'));
            }else{
                this.yhkkjeShow = true
                callback()
            }
        };
        //本人提取非空校验
        const brtqfkCheck = async(rule, value, callback) => {
            if(!this.disBr && !this.formItem.tqjebr){
                return callback(new Error('请输入提取金额'));
            }else{
                callback()
            }
        }
        //配偶提取金额校验
        const potqjeCheck = async(rule, value, callback) => {
            if(this.formItem.tqjepo > this.poye){
                this.yhkkjeShow = false
                return callback(new Error('提取金额不能高于公积金余额'));
            }else if(!this.disPo && this.formItem.tqjepo == this.poye){
                this.yhkkjeShow = false
                return callback(new Error('公积金不能全部提取'));
            }else{
                this.yhkkjeShow = true
                callback()
            }
        }
        //配偶提取金额非空校验
        const potqfkChenck = async(rule, value, callback) => {
            if(!this.disPo && !this.formItem.tqjepo){
                return callback(new Error('请输入提取金额'));
            }else{
                callback()
            }
        }
        return {
        ....//不重要,省略
		}

2.在合适的场景中调用

  • blur 失去焦点时,change 内容改变时
  • validator 关键字,后面跟开始时自定义的规则名
  • trigger 关键字,触发节点

data return 里⬇

ruleForm:{
    tqjebr:[
        { validator:brtqfkCheck, trigger: 'blur' },
        { validator:brtqjeCheck, trigger: 'blur' },
        { validator:brtqjeCheck, trigger: 'change' }
    ],
    tqjepo:[
        { validator:potqfkChenck, trigger: 'blur' },
        { validator:potqjeCheck, trigger: 'change' },
        { validator:potqjeCheck, trigger: 'blur' }
    ]
}

3.Form表单提交时,须判断校验是否通过

//提交按钮点击事件
 commitBtn(){
     this.$refs.refForm.validate(async(valid) => {
         if (valid) {
             this.$Message.success('校验通过');
             //执行后续操作
         }else{
             this.$Message.error('请检查输入项!');
         }
     })
 }

最后吐槽一下。iview 坑太多了,能不用这个框架就不要用了,已经用了的,祝君好运!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iview form表单通过校验规则来确保用户输入数据的合法性。但是有时候我们需要移除某些校验规则来满足特定需求。 iview form表单提供了两种方法来移除校验规则,分别是通过表单ref属性和通过字段的prop属性。 通过表单ref属性移除校验规则,需要先获取表单对象,然后调用$refs.formName.removeRule()方法。其中,formName为表单的ref属性值,removeRule()方法中传入的参数为需要移除校验规则的字段的prop属性值。 实例如下: ```html <template> <Form :model="form" :rules="rules" ref="form"> <FormItem label="姓名" prop="name"> <Input v-model="form.name" /> </FormItem> <FormItem label="手机号" prop="phone"> <Input v-model="form.phone" /> </FormItem> <FormItem> <Button @click="removePhoneRule">移除手机号校验</Button> </FormItem> </Form> </template> <script> export default { data() { return { form: { name: '', phone: '' }, rules: { name: [{required: true, message: '请输入姓名', trigger: 'blur'}], phone: [{required: true, message: '请输入手机号', trigger: 'blur'}, {pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确', trigger: 'blur'}] } } }, methods: { removePhoneRule() { this.$refs.form.removeRule('phone'); } } } </script> ``` 通过字段的prop属性移除校验规则,只需要在校验规则中将该字段的校验规则设置为一个空数组即可。 实例如下: ```html <template> <Form :model="form" :rules="rules"> <FormItem label="姓名" prop="name"> <Input v-model="form.name" /> </FormItem> <FormItem label="手机号" prop="phone"> <Input v-model="form.phone" /> </FormItem> <FormItem> <Button @click="removePhoneRule">移除手机号校验</Button> </FormItem> </Form> </template> <script> export default { data() { return { form: { name: '', phone: '' }, rules: { name: [{required: true, message: '请输入姓名', trigger: 'blur'}], phone: [{required: true, message: '请输入手机号', trigger: 'blur'}, {pattern: /^1[3456789]\d{9}$/, message: '手机号格式不正确', trigger: 'blur'}] } } }, methods: { removePhoneRule() { this.rules.phone = []; } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值