View on GitHub

react-valid-form

React form validation component.

react-valid-form

React form validation component.

npm package Build Status Dependencies Status Package Size

Getting started

Install with NPM:

$ npm install react-valid-form-component

Usage

Live Demo CodeSandbox

With this component, you can validate form fields according to the rules you specify. Simply define your form in the <ValidForm></ValidForm> tags to validate.

Component supports standard form elements;

<input />
<select></select>
<textarea></textarea>
Example

When the form is validated, it is automatically posted. You can manually Submit or Fetch using nosubmit prop. You can follow the details about the form with onSubmit={(form, data, valid)} event.

Auto Submit Example CodeSandbox

// App.js
import React from 'react';
import ValidForm from 'react-valid-form-component'

function App() {
    return (
        <ValidForm action="https://httpbin.org/post" method="post">
            <div>
                <label for="validation">Text Example: </label>
                <input
                    type="text"
                    name="validation"
                    id="validation"
                    /* validation rules */
                    required
                    minLength="3"
                    maxLength="50"
                />
            </div>
            <div>
                <label for="validation">Email Example: </label>
                <input
                    type="email" /* validation with type */
                    name="validation"
                    id="validation"
                />
            </div>
            <button type="submit">Send Form</button>
        </ValidForm>
    )
}
export default App;
Manual Fetch Example

Once the form is validated, you can send the data manually.

Fetch Example CodeSandbox

// App.js
import React from 'react';
import ValidForm from 'react-valid-form-component'

function App() {
    const onSubmit = (form, data, valid) => {
        const requestOptions = {
            method: "POST",
            headers: {
                Accept: "application/json",
                "Content-Type": "application/json"
            },
            body: JSON.stringify(data)
        };

        fetch("https://httpbin.org/post", requestOptions)
            .then(response => {
                if (response.ok) {
                    return response.json();
                } else {
                    throw new Error(`Response Error, Status Code : ${response.status}`);
                }
            })
            .then(json => {
                console.log(json);
            })
            .catch(function (error) {
                console.error(error);
            });
    }
    return (
        <ValidForm nosubmit onSubmit={(form, data, valid) => onSubmit(form, data, valid)}>
            <div>
                <label for="validation">Text Example: </label>
                <input
                    type="text"
                    name="validation"
                    id="validation"
                    /* validation rules */
                    required
                    minLength="3"
                    maxLength="50"
                />
            </div>
            <div>
                <label for="validation">Email Example: </label>
                <input
                    type="email" /* validation with type */
                    name="validation"
                    id="validation"
                />
            </div>
            <button type="submit">Send Form</button>
        </ValidForm>
    )
}
export default App;
Props

nosubmit Disable auto submit.

novalid “onSubmit” event is also triggered when the form is not valid.

data Default form elements value.

Events

onSubmit={(form, data, valid)} When the form is submitted, it is triggered.

Default Validation Rules

You can add rules and change warning texts. You can use rules by defining them as type="" or prop. Follow the document for details.

Add Validation Rule

Import Rules and Warnings objects for add rule.

import ValidForm, { Rules, Warnings } from 'react-valid-form';

// rule
Rules.customRule = (value) => {
  return (value === "Custom Rule")
};

// warning alert
Warnings.customRule = (params) => `This field is custom rule ${params}.`

// using
<input type="text" name="validation" id="validation" customRule />
React Select

To use required validation with react-select component.

<Select
  name="reactSelect"
  inputId="reactSelect"
  className="react-select-valid"
  options={[
    { label: 'Option 1', value: '1' },
    { label: 'Option 2', value: '2' },
    { label: 'Option 3', value: '3' },
  ]}
/>

Author

Barış Ateş