Table of contents
1.
Introduction
2.
Disabling Button on Click
3.
Disabling Submit Button
4.
Disabling Button on Page Load
5.
Enabling Button Using jQuery
6.
Checking If a Button is Disabled or Enabled Using jQuery
7.
Frequently Asked Questions
7.1.
Can I disable multiple buttons at once using jQuery?
7.2.
How can I enable a button based on form validation?
7.3.
Is it possible to style disabled buttons differently?
8.
Conclusion
Last Updated: Aug 5, 2024
Easy

Disable Button in jQuery

Author Rinki Deka
0 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

Buttons are a fundamental part of web pages & apps, which allows users to interact with the interface. Sometimes, you may need to disable a button to prevent unwanted clicks or submissions. jQuery, a popular JavaScript library, makes it easy to disable buttons dynamically. 

Disable Button in jQuery

In this article, we'll talk about the different ways to disable buttons with the help of jQuery, which includes disabling on click, on page load, & enabling buttons when needed. We'll also learn how to check if a button is disabled or enabled. 

Disabling Button on Click

When a user clicks a button, you may want to disable it to prevent multiple clicks or indicate that an action is in progress. jQuery provides a simple way to achieve this. 

For example : 

<button id="myButton">Click Me</button>
$(document).ready(function() {
  $('#myButton').click(function() {
    $(this).prop('disabled', true);
  });
});


In this code, we have a button with an ID of `myButton`. Inside the jQuery `ready` function, we attach a click event handler to the button using `$('#myButton').click()`. When the button is clicked, the callback function is executed.

Inside the callback function, we use `$(this).prop('disabled', true)` to set the `disabled` property of the button to `true`. `$(this)` refers to the button element itself, & `prop()` is used to set the property value.

After clicking the button, it will be disabled, preventing further clicks.

Disabling Submit Button

When working with forms, you often have a submit button that triggers the form submission. Disabling the submit button can be useful to prevent multiple submissions or to indicate that the form is being processed. 

For example : 

<form id="myForm">
  <input type="text" name="name" required>
  <button type="submit">Submit</button>
</form>

$(document).ready(function() {
  $('#myForm').submit(function(e) {
    e.preventDefault();
    $('button[type="submit"]').prop('disabled', true);
    // Perform form submission or other actions here
  });
});


In this code, we have a form with an ID of `myForm`. Inside the jQuery `ready` function, we attach a `submit` event handler to the form using `$('#myForm').submit()`. When the form is submitted, the callback function is executed.

Inside the callback function, we first use `e.preventDefault()` to prevent the default form submission behavior. This allows us to handle the form submission manually.

Next, we use `$('button[type="submit"]').prop('disabled', true)` to disable the submit button. The selector `button[type="submit"]` targets the button element with the attribute `type="submit"` within the form.

After disabling the submit button, you can perform any necessary form submission actions or validations. Once the processing is complete, you can re-enable the submit button if needed.

Disabling Button on Page Load

In some cases, you may want to disable a button by default when the page loads. This can be useful when certain conditions need to be met before allowing the user to interact with the button. 

For example

<button id="myButton" disabled>Click Me</button>

$(document).ready(function() {
  // Button is initially disabled
  $('#myButton').prop('disabled', true);
  
  // Enable button after 5 seconds
  setTimeout(function() {
    $('#myButton').prop('disabled', false);
  }, 5000);
});


In this code, we have a button with an ID of `myButton`. We set the `disabled` attribute directly in the HTML to ensure that the button is disabled by default when the page loads.

Inside the jQuery `ready` function, we use `$('#myButton').prop('disabled', true)` to set the `disabled` property of the button to `true`. This is not strictly necessary since we already disabled the button in the HTML, but it demonstrates how you can disable a button programmatically on page load.

To demonstrate enabling the button after a certain condition is met, we use `setTimeout()` to delay the execution of a function by 5000 milliseconds (5 seconds). Inside the delayed function, we use `$('#myButton').prop('disabled', false)` to set the `disabled` property of the button to `false`, effectively enabling it.

You can replace the `setTimeout()` example with your own condition or logic for enabling the button based on your specific requirements.

Enabling Button Using jQuery

In the previous example, we saw how to disable a button on page load and enable it after a certain condition is met. 

Let's discuss some more ways to enable a button using jQuery.

<button id="enableButton">Enable</button>
<button id="disabledButton" disabled>Disabled Button</button>

$(document).ready(function() {
  $('#enableButton').click(function() {
    $('#disabledButton').prop('disabled', false);
  });
});


In this code, we have two buttons: one with an ID of `enableButton` and another with an ID of `disabledButton`. The `disabledButton` is initially disabled using the `disabled` attribute in the HTML.

Inside the jQuery `ready` function, we attach a click event handler to the `enableButton` using `$('#enableButton').click()`. When the "Enable" button is clicked, the callback function is executed.

Inside the callback function, we use `$('#disabledButton').prop('disabled', false)` to set the `disabled` property of the `disabledButton` to `false`, effectively enabling it.

Now, when the user clicks the "Enable" button, the previously disabled button will become enabled and interactive.

You can extend this concept to enable buttons based on various conditions, such as form validation, user actions, or server responses. Simply use the appropriate selector to target the desired button and set its `disabled` property to `false` when the enabling condition is met.

Checking If a Button is Disabled or Enabled Using jQuery

Sometimes, you may need to check the state of a button to determine if it is currently disabled or enabled. jQuery provides a way to retrieve the `disabled` property of a button. 

For example : 

<button id="myButton">Click Me</button>

$(document).ready(function() {
  $('#myButton').click(function() {
    if ($(this).prop('disabled')) {
      console.log('Button is disabled');
    } else {
      console.log('Button is enabled');
      // Perform action for enabled button
    }
  });
  
  // Disable the button after 3 seconds
  setTimeout(function() {
    $('#myButton').prop('disabled', true);
  }, 3000);
});

 

In this code, we have a button with an ID of `myButton`. Inside the jQuery `ready` function, we attach a click event handler to the button using `$('#myButton').click()`. When the button is clicked, the callback function is executed.

Inside the callback function, we use an `if` statement to check the `disabled` property of the button. We use `$(this).prop('disabled')` to retrieve the current value of the `disabled` property for the clicked button.

If the button is disabled (`prop('disabled')` returns `true`), we log the message "Button is disabled" to the console. Otherwise, if the button is enabled (`prop('disabled')` returns `false`), we log the message "Button is enabled" and perform any desired action for the enabled button.

To show the checking of the button state, we use `setTimeout()` to disable the button after a delay of 3000 milliseconds (3 seconds). After the specified delay, the button will be disabled, & clicking it will log the message "Button is disabled" to the console.

Note: You can use this technique to check the state of a button at any point in your code & perform different actions based on whether the button is disabled or enabled.

Frequently Asked Questions

Can I disable multiple buttons at once using jQuery?

Yes, you can use a class selector or multiple selectors to target & disable multiple buttons simultaneously.

How can I enable a button based on form validation?

You can use jQuery to check the validity of form inputs & enable the submit button only when all required fields are filled correctly.

Is it possible to style disabled buttons differently?

Yes, you can use CSS to apply different styles to disabled buttons, such as changing their appearance or cursor.

Conclusion

In this article, we learned how to disable & enable buttons using jQuery. We discussed different scenarios, like disabling buttons on click, disabling submit buttons, disabling buttons on page load, & enabling buttons programmatically. In the end, we also explained how to check if a button is disabled or enabled using jQuery.

You can also practice coding questions commonly asked in interviews on Coding Ninjas Code360

Also, check out some of the Guided Paths on topics such as Data Structure and AlgorithmsCompetitive ProgrammingOperating SystemsComputer Networks, DBMSSystem Design, etc., as well as some Contests, Test Series, and Interview Experiences curated by top Industry Experts.

Live masterclass