christianalfoni / formsy-react

A form input builder and validator for React JS
MIT License
2.6k stars 438 forks source link

Suggestion for conditional validation? #483

Open brandondurham opened 6 years ago

brandondurham commented 6 years ago

I find myself in a scenario where I have 4 form fields that need validation only under certain conditions, and no validation in others.

Is conditional validation an option?

brandondurham commented 6 years ago

Currently I just keep validation rules in an object and apply conditionally:

if (validateCreditCart) {
    Object.assign(ccProps, {
        cardExpiration: {
            required: true,
            validations: true
        },
        cardNumber: {
            required: true,
            validationErrors: { isCreditCardNumber: 'Invalid card number' },
            validations: 'isCreditCardNumber'
        },
        cardCvv: {
            required: true,
            validationErrors: { isCreditCardCvv: 'Invalid cvv' },
            validations: 'isCreditCardCvv'
        }
    });
}

…

<FormInput
    classGroup={ classGroup }
    className={ styles.fieldCreditCardNumber }
    label="Card number"
    layout={ layout }
    name="cardNumber"
    onChange={ this.onChange }
    onFocus={ this.clearCCFields }
    { ...ccProps.cardNumber }
/>

Is there a better way that you recommend?