by Sai gowtham

How to disable a button when input is empty in React

In this tutorial, we are going to learn about how to disable the button when an input field is empty in React.

Consider we have an input field, <button> element in our react component and we need to disable the button dynamically if an input field is empty, it means the user has not entered any data yet.

App.js
import React,{Component} from 'react';

class App extends Component {

   state = {
      email:""
    };

    handleChange = (e)=>{
        this.setState({
          email:e.target.value
        })
    }

  render() {
    return (
      <div>
          <input value={this.state.email} onChange={this.handleChange} />
          <button>Submit</button>
      </div>
    );
  }
}

Disabling the button

To disable the button we need to add a disabled attribute to the <button> element with a boolean value.

  • if a boolean value is true button is disabled.
  • if a boolean value is false button is enabled.
App.js
import React,{Component} from 'react';

class App extends Component {

   state = {
      email:""
    };

    handleChange = (e)=>{
        this.setState({
          email:e.target.value
        })
    }

  render() {
    return (
      <div>
          <input value={this.state.email} onChange={this.handleChange} />
          <button disabled={this.state.email.length<1}>Submit</button>      </div>
    );
  }
}

In the above code, we have passed a value this.state.email.length<1 to disabled attribute. it means disable the button if an input length is less than 1, otherwise enable it.

Top Udemy Courses

JavaScript - The Complete Guide 2020 (Beginner + Advanced)
JavaScript - The Complete Guide 2020 (Beginner + Advanced)
26,545 students enrolled
52 hours of video content
View Course
React - The Complete Guide (incl Hooks, React Router, Redux)
React - The Complete Guide (incl Hooks, React Router, Redux)
221,520 students enrolled
44 hours of video content
View Course
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex)
114,575 students enrolled
21 hours of video content
View Course