How To Validate Form In React JS

Websolutionstuff
3 min readOct 17, 2022

--

In this article, we will see how to validate a form in react js. We will validate the input type email, phone number, and only numbers. Also, we will see step-by-step basic form validation in react js. Form handling is an essential part of any website. Since Forms takes the important information from the user. We must create robust form components which can handle inputs and their validation easily.

So, let’s see form validation in react js and how to add form validation in react forms.

Step 1: Install React App

In this step, we will create and install react app using the following command.

npx create-react-app my-app

Step 2: Create DemoForm Component

In this step, we will create the DemoForm component file.

src/DemoForm.js

import React from 'react';

class DemoForm extends React.Component {
constructor() {
super();
this.state = {
input: {},
errors: {}
};

this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}

handleChange(event) {
let input = this.state.input;
input[event.target.name] = event.target.value;

this.setState({
input
});
}

handleSubmit(event) {
event.preventDefault();

if(this.validate()){
console.log(this.state);

let input = {};
input["name"] = "";
input["email"] = "";
input["comment"] = "";
this.setState({input:input});

alert('Form is submited');
}
}

validate(){
let input = this.state.input;
let errors = {};
let isValid = true;

if (!input["name"]) {
isValid = false;
errors["name"] = "Please enter your name.";
}

if (!input["email"]) {
isValid = false;
errors["email"] = "Please enter your email Address.";
}

if (typeof input["email"] !== "undefined") {

var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
if (!pattern.test(input["email"])) {
isValid = false;
errors["email"] = "Please enter valid email address.";
}
}

if (!input["comment"]) {
isValid = false;
errors["comment"] = "Please enter your comment.";
}

this.setState({
errors: errors
});

return isValid;
}

render() {
return (
<div>
<h1>How To Validate Form In React JS - Websolutionstuff</h1>
<form onSubmit={this.handleSubmit}>

<div class="form-group">
<label for="name">Name:</label>
<input
type="text"
name="name"
value={this.state.input.name}
onChange={this.handleChange}
class="form-control"
placeholder="Enter name"
id="name" />

<div className="text-danger">{this.state.errors.name}</div>
</div>

<div class="form-group">
<label for="email">Email Address:</label>
<input
type="text"
name="email"
value={this.state.input.email}
onChange={this.handleChange}
class="form-control"
placeholder="Enter email"
id="email" />

<div className="text-danger">{this.state.errors.email}</div>
</div>

<div class="form-group">
<label for="comment">Comment:</label>
<textarea
name="comment"
value={this.state.input.comment}
onChange={this.handleChange}
placeholder="Enter comment"
class="form-control" />

<div className="text-danger">{this.state.errors.comment}</div>
</div>

<input type="submit" value="Submit" class="btn btn-success" />
</form>
</div>
);
}
}

export default DemoForm;

Step 3: Import Component

In this step, we will import DemoFormcomponent in the index.js main file.

src/index.js

import React from 'react';
import ReactDOM from 'react-dom';
import 'bootstrap/dist/css/bootstrap.min.css';

import DemoForm from './DemoForm';

ReactDOM.render(
<React.StrictMode>
<div className="container">
<DemoForm />
</div>
</React.StrictMode>,
document.getElementById('root')
);

serviceWorker.unregister();

Step 4: Run Server

In this step, we will run the server using the following command.

npm start

If this post was helpful, please click the clap 👏 button below. A few times to show your support. ⬇⬇

--

--

Websolutionstuff
Websolutionstuff

Written by Websolutionstuff

I am Laravel and PHP Developer. I have also Good Knowledge of JavaScript, jQuery, Bootstrap and REST API. Visit Website: http://websolutionstuff.com/

No responses yet