当前位置: 首页 > news >正文

React的form表单自定义校验规则

        使用antd开发的过程中,必定会遇到需要对form表单进行必填校验的处理,正常情况下,我们都会一个空的必填校验,如下:一般我们只需要简单配置rules即可

<FormItem label="管理员姓名" {...itemLayout.wholeLine}>{getFieldDecorator('adminName', {initialValue: '',rules: [{ required: true, message: '请输入管理员姓名' },],})(<AInput placeholder="请输入管理员姓名" maxLength={30} />)}
</FormItem>

        遇到一些情况是:输入框有多个校验规则,比如说一个邮箱输入框

我们既需要:1、不为空;2、也需要邮箱格式正确;3、还需要与其他邮箱的后缀保持一致;

         这个时候我们可能需要用到自定义的校验规则:validator配置自定义校验规则

<FormItem label="管理员邮箱" {...itemLayout.wholeLine}>{getFieldDecorator('adminEmail', {initialValue: '',rules: [{required: true,whitespace: true,validator: this.adminEmailVerification,}],})(<AInput placeholder="请输入管理员邮箱" maxLength={30}/>)}
</FormItem>// 校验方法
adminEmailVerification = (rule, value, callback)=>{if(!value){callback(new Error('请输入管理员邮箱'));return} else{const emailRegex = /^([^@\u4e00-\u9fa5]+)@([^@\\.\u4e00-\u9fa5]+)(\.[^\\.@\u4e00-\u9fa5]+)+$/;  if(!emailRegex.test(value)){callback(new Error('邮箱格式错误'));return} else{callback()this.emailSuffixVerification()}}callback()return
}emailSuffixVerification = ()=>{const {form} = this.propslet collaboratorEmail = form.getFieldValue('collaboratorEmail');let adminEmail = form.getFieldValue('adminEmail');let [, suffix1] = (collaboratorEmail || '').split('@');  let [, suffix2] = (adminEmail || '').split('@'); if(suffix1 && suffix2 && (suffix1 != suffix2)){this.props.form.setFields({adminEmail: {value: adminEmail, errors: [new Error('邮箱后缀请与业务伙伴官邮后缀保持一致')] }})}
}

http://www.lryc.cn/news/375951.html

相关文章:

  • 一种新的一维时间序列信号盲解卷积算法(以旋转机械故障诊断为例,MATLAB环境)
  • 618电商是社区网站入局的好时机吗?
  • 不知道密码,一样能卸载瑞星esm防病毒终端安全防护系统
  • Chromium 开发指南2024 Mac篇-安装和配置depot_tools工具(三)
  • 微信小程序-路由和页面跳转API
  • PWR电源控制
  • 【记录46】【案例】echarts 柱状图
  • Github2024-06-12 开源项目日报 Top10
  • 茶艺师服务师傅小程序APP源码(APP+小程序+公众号+H5)
  • 【正则表达式】入门
  • 制造业为什么需要ERP企业管理软件?
  • JavaScript Prototype
  • Web Works API 和 Promise 的对比和区别
  • jeecg快速启动(附带本地运行可用版本下载)
  • 【PPT教程】一键重置幻灯片背景的方法,新建幻灯片带默认背景
  • NVIDIA新模型Nemotron-4:98%的训练数据是合成生成的,你敢信?
  • 深度神经网络——什么是NLP(自然语言处理)?
  • 05-5.5.1 哈夫曼树
  • 夯实网络底座:智能云解析助推新基建发展再上新台阶
  • 时间戳转时间格式小记——个位数月份 如何去掉补位0的情况
  • C++ 矩阵乘法
  • 热门开源项目推荐
  • Study--Oracle-03-数据库常规操作
  • OpenCloudOS 8.8 一键安装 Oracle 19C 单机
  • 【Android】【Java】【每日练手3】Android的四个主要组件使用示例
  • 代码随想三刷二叉树篇2
  • QT pro包含库文件目录符号含义
  • uniapp怎么进行页面的跳转
  • 数据库管理-第205期 换个角度看23ai(20240617)
  • 深入解析PHP函数