jeecg-boot:前端antd 表单校验方式整理

本文介绍了Jeecg-boot对Antd Vue组件的校验方法,包括表单和JEditableTable的验证规则。表单验证中,使用v-decorator属性结合rules和validator进行校验,如必填项和自定义函数验证。在JEditableTable中,校验通过pattern配置正则表达式实现,不支持自定义校验函数。详细规则参考官方文档。

jeecg-boot对antd-vue的校验做了封装,总体来讲分为表单校验和JEditableTable 校验:

表单校验:

以以下为例:

 

<a-form :form="form">
        <a-row>
          <a-col :span="12" :gutter="8">
            <a-form-item
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              label="设备大类名称">
              <a-input placeholder="请输入设备大类名称" v-decorator="['deviceBigTypeName', validatorRules.deviceBigTypeName]" />
            </a-form-item>
          </a-col>
          <a-col :span="12" :gutter="8">
            <a-form-item
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              label="设备大类编码">
              <a-input placeholder="请输入设备大类编码" v-decorator="['deviceBigTypeCode', validatorRules.deviceBigTypeCode]"/>
            </a-form-item>
          </a-col>
        </a-row>
        <a-row>
          <a-col :span="12" :gutter="8">
            <a-form-item
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              label="备注">
              <a-input placeholder="请输入备注" v-decorator="['remark', validatorRules.remark]"/>
            </a-form-item>
          </a-col>
          <a-col :span="12" :gutter="8">
            <a-form-item
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              label="排序">
              <a-input-number placeholder="请输入排序" style="width:100%" v-decorator="[ 'sortNo', validatorRules.sortNo]"/>
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>

如果要校验,那么需要增加v-decorator属性

v-decorator属性的值是数组,第一个元素是该元素的字段名,第二个是一个json格式的数据,用来进行校验配置,

如下:

 validatorRules: {
          deviceBigTypeName:{
            rules: [{ required: true, message: '请输入设备大类名称!' }]
          },
          deviceBigTypeCode:{
            rules: [{ required: true, message: '请输入设备大类编码!' },
              { validator: validatAlphabets }]
          },
          remark:{
            rules: [{ required: true, message: '请输入备注!' }]
          },
          sortNo:{
            rules: [{ required: true, message: '请输入排序号!' }]
          },
        },

rules配置的是校验规则

值为数组 

[{ required: true, message: '请输入设备大类编码!' }, { validator: validatAlphabets }]

数组的每一个元素都是一组规则,

比如第一个规则是配置必填的,需要配置required和message

required的取值:false/true

message表示不符合要求的时候进行提示的内容

第二个规则是配置的合法性校验

validator属性的值是一个校验函数(参考一下utils/vlidate.js的validataAlphabets函数)

在该文件中引入

 import {validatAlphabets } from '@/utils/validate'

 

以下是校验的函数库。

utils/validate.js


/* 大小写字母*/
export function validatAlphabets(rule, value, callback) {
  const reg = /^[A-Za-z]+$/;
  const rsCheck = reg.test(value);
  if (!rsCheck) {
    callback(new Error('请输入大写或小写字母!'));
  } else {
    callback();
  }
}

配置完这些就可以看效果了:

进入到界面,点击确定按钮,就执行校验规则,如果不符合校验规则,那么就进行提示

输入合法数据以后,提醒就消除

 

======================================================================================================

分割线,以上讲解的是表单中的校验

那么在可编辑表格中怎么校验呢

即JEditableTable 

官网有详细的讲解

http://jeecg-boot.mydoc.io/?t=345687#validaterules-配置规则

edittable的校验与表单有所不同,他的合法校验是直接进行正则表达式校验

比如:

 // 表单验证规则
        validateRules: [
            {
                required: true, // 必填
                message: '${title}不能为空' // 提示的文本
            },
            {
                pattern: /^[a-z|A-Z][a-z|A-Z\d_-]{0,}$/, // 正则
                message: '${title}必须以字母开头,可包含数字、下划线、横杠'
            }
        ]

edittable不能直接用validator属性调用校验函数,需要通过pattern直接配置正则表达式。

好了

分析的差不多了

以后遇到问题再进行分析

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值