Ant Design VUE表单校验之自定义服务端校验

引言

本文章涉及的代码块,为实际代码中的截取部分,请各位结合自己的实际情况修改

开始

这里我的校验需求是编号不可重复,如果重复需要抛出校验信息

表单结构部分

根据Ant Design VUE的文档定义好需要的字段

<a-modal :visible="visible" title="项目定义信息" :width="800">
        <a-form-model ref="project" :rules="rules" :label-col="{ span: 6 }" :wrapper-col="{ span: 15 }" :model="project">
            <a-row>
                <a-col :md="12" :sm="24">
                    <a-form-model-item prop="projectCode" label="项目编号" :labelCol="{span: 6}" :wrapperCol="{span: 16, offset: 1}">
                        <a-input v-model="project.projectCode" placeholder="请输入"/>
                    </a-form-model-item>
                </a-col>
            </a-row>
        </a-form-model>
    </a-modal>

校验参数定义部分

通过参考Ant Design VUE的文档,自定义表单校验规则的关键字为validator,如下图所示:
Ant Design VUE表单校验之自定义服务端校验
参照文档后,编写出如下代码。在这里我定义的函数名为handleConfirmProjectCode,自定义函数校验触发的状态为失去焦点时出触发

        data() {
            return {
                visible: false,
                rules: {
                    projectCode: [{validator:this.handleConfirmProjectCode, trigger: 'blur'}]
                },
                project: {},
            }
        },

monthed部分(函数部分)

直接上代码

            handleConfirmProjectCode(rule,value,callback){
                this.$http.get(`这里面写你需要请求后台的地址`)
                    .then(response=>{
                        if (response.data.success==true){
                            callback(response.data.message)//将需要系统显示的校验提示语写到回调里就可以
                        }
                        callback()//这个回调必须调用一次,我也不知道为什么,文档也没有说明
                    })
                    .catch(error=>{// eslint-disable-line no-unused-vars
                        this.$message.warning('校验异常')
                    })
            }

解释一下上面的代码

  • value这个入参就是你挂载这个校验的表单中元素的值,比如你input框中输入的值,下拉选择的值
  • callback校验回调
  • // eslint-disable-line no-unused-vars这个跟本文其实没什么关系,是因为我的项目开了eslint校验,我在catch异常处理时定义的error没有使用,运行时会报错,所以加上这个注解让他忽略这个定义未使用的变量
上一篇:C语言 —— 回调函数


下一篇:vue实现表单验证规则