首页 > 解决方案 > redux 表单的验证功能没有被触发

问题描述

这是我的代码,我正在尝试触发验证功能,但它没有被触发,因此我无法验证我的表单

import React from 'react';
import { Grid, Row, Col } from '@vds/grids';
import ReqInput from './../../common/ReqInput';
import {Body, Micro} from './../../common/Typography/index';
import styled from 'styled-components';
import { Field, reduxForm } from 'redux-form/immutable';
import * as validation from './../../common/validation.js';


class PaymentForm extends React.PureComponent {
    constructor() {
        super();
    }

    onChangeTextBox = (name, e) => { 
        
     }

    render() {
        const { firstNameLabel, lastNameLabel, cardLabel, cvvLabel, expirationLabel, zipCodeLabel, disclaimerText, cvvTooltipInfo} = this.props;
        const images = [ MasterpassSC, VisaVerified, NortonSeal ];
        // const cvv = cvv;
        // const tooltipContent = cvvTooltipInfo + 
        return (
            <React.Fragment>
                <HeadingContainer>
                    <Col>
                        <BoldDiv>{this.props.cardInfoLabel}</BoldDiv>
                        <span>{this.props.enterCardInfoLabel}</span>
                    </Col>
                </HeadingContainer>
                <form>
                <FormDiv>
                    <InputRow>                    
                        <Col className="namesInput">
                            <ReqInput
                            // defaultValue={contactEditProps.contactInfoValues ? contactEditProps.contactInfoValues.firstName : ""}
                            id="firstName"
                            name="firstName"
                            type="text"
                            placeholder=""
                            required
                            label={<Micro primitive="span">{firstNameLabel}</Micro>}
                            onChange={(e) => this.onChangeTextBox('fName', e)}
                        />
                        </Col>
                        <Col className="namesInput">
                            <ReqInput
                            // defaultValue={contactEditProps.contactInfoValues ? contactEditProps.contactInfoValues.lastName : ""}
                            id="lastName"
                            name="lastName"
                            type="text"
                            placeholder=""
                            required
                                error
                            label={<Micro primitive="span">{lastNameLabel}</Micro>}
                            onChange={(e) => this.onChangeTextBox('lName', e)}
                        />
                        </Col>
                    </InputRow>
                </FormDiv>
                
                            </form>
            </React.Fragment>
        )
    }
};

const validate = (values, props) => {
    const errors = {};
    console.log('vzlues', values);
  const firstName = values.get('firstName');
  const lastName = values.get('lastName');
  console.log('in validate', firstName);
  if (!firstName) {
    errors.firstName = props.requiredText;
  } else if (!validation.isValidName(firstName)) {
    errors.firstName = props.firstNameErrorText;
  }
  if (!lastName) {
    errors.lastName = props.requiredText;
  } else if (!validation.isValidNameWithHyphen(lastName)) {
    errors.lastName = props.lastNameErrorText;
  }
 }
  return errors;
 }

export default reduxForm({
    form: 'PaymentFormDetails',
    validate,
  })(PaymentForm);

我无法理解我在这里缺少什么以及我应该怎么做,调用验证函数广告使我的表单在给出无效输入时显示所有错误。

reqInput 是带有输入字段的用户定义组件

标签: javascriptreactjsredux-formreact-redux-formredux-form-validators

解决方案


推荐阅读