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.props
  let 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('邮箱后缀请与业务伙伴官邮后缀保持一致')] }
    })
  }
}

React中实现多个表单校验可以通过以下步骤进行操作: 1. 创建表单组件:首先,创建一个表单组件,可以使用`<form>`元素来包裹表单的各个输入字段。 2. 创建表单字段组件:为每个需要校验的表单字段创建一个独立的组件。这些组件可以是自定义组件,也可以是HTML中的原生表单元素(如`<input>`、`<select>`等)。 3. 设置表单字段的状态:为每个表单字段组件设置相应的状态,用于存储用户输入的值和校验结果。可以使用React的`useState`钩子来管理状态。 4. 编写校验规则:为每个表单字段定义校验规则,例如必填字段、长度限制、格式验证等。可以使用正则表达式或其他验证库来完成校验。 5. 执行校验逻辑:在表单提交或字段失去焦点等事件中,触发校验逻辑。遍历所有的表单字段状态,根据校验规则对各个字段的值进行验证,并更新相应的校验结果状态。 6. 显示校验结果:根据校验结果状态,显示相应的提示信息或错误样式。可以使用条件渲染来控制提示信息的显示与隐藏。 7. 提交表单:在表单提交事件中,检查所有字段的校验结果。如果所有字段都通过了校验,则可以继续执行提交操作;否则,阻止表单的默认提交行为,并提示用户进行必要的修正。 以上是一种简单的实现方式,你可以根据具体的业务需求进行调整和扩展。同时,可以使用一些第三方库来简化表单校验的过程,例如`formik`、`yup`等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小灰灰学编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值