antd 表单正则

2 篇文章 0 订阅
2 篇文章 0 订阅

记录第一次用antd 遇到的正则问题(两个密码是否一致)

表单里面调用方法的时候 千万不要调用错了,方法中getFieldValue(‘这里也要注意’)

import React, { Component } from "react";
import { Form, Input, Button } from 'antd';
import './../../assets/css/register.css'

class ConfirmPassWordForm extends Component {
    constructor(props) {
        super(props);
    }
    //确认
    handleSubmit = e => {
        e.preventDefault();
        this.props.form.validateFields((err, values) => {
            if (!err) {
                console.log('Received values of form: ', values);
            }
        });
    };
    //新密码校验
    handleCfmPwd(rules, value, callback) {
        let loginpass = this.props.form.getFieldValue('loginpass');//注意这里哦
        if (loginpass && loginpass !== value) {
            callback(new Error('两次密码输入不一致'))
        } else {
            // Note: 必须总是返回一个 callback,否则 validateFieldsAndScroll 无法响应
            callback();
        }
    }
    //新密码一致校验
    handleCheckPwd(rules, value, callback) {
        let cfmPwd = this.props.form.getFieldValue('cfmloginpass'); //注意这里哦
        if (cfmPwd && cfmPwd !== value) {
            callback(new Error('两次密码输入不一致'))
        } else {
            // Note: 必须总是返回一个 callback,否则 validateFieldsAndScroll 无法响应
            callback();
        }
    }
    render() {
        const { visible, onCancel, onOk, form } = this.props;
        const { getFieldDecorator } = form;

        return (
            <div className="loginbox">
                <div className="login-left">
                    <Form onSubmit={this.handleSubmit} className="login-form">
                        <Form.Item className="toptitle">
                            <h1>我是logo</h1>
                            <h2>Change Password</h2>
                        </Form.Item>
                        <Form.Item>
                            {getFieldDecorator('loginpass', {
                                rules: [
                                    { required: true, message: 'New password cannot be blank' },
                                    { max: 16, message: 'Password should be between 7-16 characters' },
                                    { min: 7, message: 'Password should be between 7-16 characters' },
                                    //密码必须包含英文和数字
                                    { pattern: /^(?![^a-zA-Z]+$)(?!\D+$)/, message: 'Password must contain both numeric and alphabetic characters' },
                                    //调用密码正则方法
                                    { validator: (rules, value, callback) => { this.handleCfmPwd(rules, value, callback)}}
                                ],
                                validateFirst: true
                            })(
                                <Input
                                    type="password"
                                    placeholder="Password"
                                    autoComplete="off"
                                />,
                            )}
                        </Form.Item>
                        <Form.Item>
                            {getFieldDecorator('cfmloginpass', {
                                rules: [
                                    { required: true, message: 'New password cannot be blank' },
                                    { max: 16, message: 'Password should be between 7-16 characters' },
                                    { min: 7, message: 'Password should be between 7-16 characters' },
                                    //密码必须包含英文和数字
                                    { pattern: /^(?![^a-zA-Z]+$)(?!\D+$)/, message: 'Password must contain both numeric and alphabetic characters' },
                                    //调用密码正则方法
                                    { validator: (rules, value, callback) => { this.handleCheckPwd(rules, value, callback)}}
                                ],
                                validateFirst: true
                            })(
                                <Input
                                    type="password"
                                    placeholder="Password"
                                    autoComplete="off"
                                />,
                            )}
                        </Form.Item>
                        <Form.Item>
                            <p>

                            </p>
                            <Button type="primary" block htmlType="submit" className="login-form-button">
                                Change Password
                            </Button>
                        </Form.Item>
                    </Form>
                </div>
                <div className="login-right">
                    <img src={require('./../../assets/images/register/right.png')} />
                </div>
            </div>

        );
    }
}

export default Form.create()(ConfirmPassWordForm);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值