ant design如何自定义表单验证?

react ant如何使用自定义表单验证?

1.上代码

const Login = (
  {
    loading,
    dispatch,
    form: {
      getFieldDecorator,
      validateFieldsAndScroll
    },
  }
  ) => {
  function handleOk() {
    validateFieldsAndScroll((errors, values) => {
      if (errors) {
        console.log(`错误信息${errors}`);
        return
      }

      dispatch({type: 'login/login', payload: values}) //如果正确就发送至models进行处理
    });
  }
  return (
    <div className={styles.form}>
      <div className={styles.logo}>
        <img alt="logo" src={logo_img}/>
        <span>Light of Hope</span>
      </div>
      <form>
        <FormItem hasFeedback>
          {getFieldDecorator('username', {
            rules: [
              {
                required: true,
                message:'请输入您的用户名'
              }
            ],
            // initialValue: 'admin', //初始值
          })(<Input prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)', fontSize:16 }} />} onPressEnter={handleOk} placeholder="用户名"/>)}
        </FormItem>
        <FormItem hasFeedback>
          {getFieldDecorator('password', {
            rules: [
              {
                required: true,
                message:'请输入您的密码'
              },
              {
                validator(rule, values, callback){
                  if(rule&&values.length>0){
                    console.log('校验完成')
                  }else{
                    callback(
                      console.log('校验完成')
                    );
                  }
                }
              }
            ],
            // initialValue: '123456',//初始值
          })(<Input prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' , fontSize:16}} />}  type="password" onPressEnter={handleOk} placeholder="密码"/>)}
        </FormItem>
        <Row>
          <Button type="primary" onClick={handleOk} loading={loading.effects.login}>
            登录
          </Button>
          <p>
            <span>Username:admin</span>
            <span>Password:123456</span>
          </p>
        </Row>
      </form>
    </div>
  )
};

2.例如:我想验证密码必须大于6位数并至少包含一个字母该如何进行做呢?在网上查了下 说可以通过validator来实现自定义验证 但我作为一个react萌新 有点不太会 还请,各位能够多多指点!

阅读 3.9k
2 个回答

使用正则表达式

这么简单的,不需要validator.写多个rule就可以了。

rules: [
              {
                required: true,
                message:'请输入您的密码'
              },
              {
                  lenght: 6,
                  message: 'xxxxxx'
              }
       ]

更多设置参考:async-validator

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题