antd自定义校验规则校验两次密码是否一致

mac2025-11-09  11

import React from 'react'; import S from './style.scss'; import { Form, Select, Input, Button,Modal} from 'antd'; class FormCop extends React.Component { //新密码一致校验 handleCheckPwd(rules,value,callback){ let cfmPwd = this.props.form.getFieldValue('cfmloginpass'); if(cfmPwd && cfmPwd !== value){ callback(new Error('两次密码输入不一致')) }else{ // Note: 必须总是返回一个 callback,否则 validateFieldsAndScroll 无法响应 callback(); } } //确认密码校验一致 handleCfmPwd(rules,value,callback){ let loginpass = this.props.form.getFieldValue('loginpass'); if(loginpass && loginpass !== value){ callback(new Error('两次密码输入不一致')) }else{ // Note: 必须总是返回一个 callback,否则 validateFieldsAndScroll 无法响应 callback(); } } render(){ const {visible,onCancel,onOk,form} = this.props; const {getFieldDecorator} = form; return ( <Modal visible={visible} title="修改密码" okText="确定" cancelText="取消" onCancel={onCancel} onOk={onOk} centered > <Form labelCol={{ span: 5 }} wrapperCol={{ span: 19 }}> <Form.Item label="旧密码"> {getFieldDecorator('oldPassword', { rules: [{ required: true, message: 'Please input your note!' }], })(<Input autoComplete="off" />)} </Form.Item> <Form.Item label="新密码"> {getFieldDecorator('loginpass', { rules: [{ required: true, message: 'Please input your note!' },{ validator:(rules,value,callback)=> {this.handleCheckPwd(rules,value,callback)} }], validateFirst:true })(<Input autoComplete="off" />)} </Form.Item> <Form.Item label="确认密码"> {getFieldDecorator('cfmloginpass', { rules: [{ required: true, message: 'Please input your note!' },{ validator:(rules,value,callback)=> {this.handleCfmPwd(rules,value,callback)} }], validateFirst:true })(<Input autoComplete="off" />)} </Form.Item> </Form> </Modal> ); } } const PwdUpdate = Form.create({ name: 'coordinated' })(FormCop); export default PwdUpdate;

使用validator进行自定义校验,校验的回调函数中必须返回一个callback()。

两次密码由于可能先输入了确认密码再去输入上一个密码框,所以都需要进行是否一致检验。

validateFirst:当某一规则校验不通过时,是否停止剩下的规则的校验,默认为false,这里设置为true避免多条验证不通过时有多条错位信息同时显示出来

最新回复(0)