How to add or remove inputs dynamically in jQuery?
Hello Coders.
This article will give you a complete guide on How to add or remove inputs dynamically in jQuery. I'm going to write a simple code in this post to add or remove inputs dynamically with jQuery.
Step 1: Add jQuery and Bootstrap CDNs
First of all, we need to add jQuery to create add or remove inputs functionality. Bootstrap is not necessary to add, I have added Bootstrap to make a quick and simple form design. You can write your custom CSS for styling.
Here are the CDN links of jQuery and Bootstrap5:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>
Step 2: Create a Simple Form
Let's create a quick HTML form, we will add just one input field for now. We will add more input fields dynamically in the next step.
...
<div class="container py-5">
<form method="post" action="">
<div class="row">
<div class="col-lg-12">
<div id="formInputs">
<div class="form-group mb-3">
<label for="">Name</label>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Name">
<button class="btn btn-outline-danger removeRow" type="button">Remove</button>
</div>
</div>
</div>
</div>
</div>
<button class="btn btn-primary submit-btn align-self-end" id="addMore">Add More</button>
</form>
</div>
...
Step 3: Add inputs dynamically using jQuery
We have created a simple HTML form with only one input, now we will add more inputs dynamically using jQuery. So, let's write a few lines of code in jQuery.
<script>
$("#addMore").on('click',function(e){
e.preventDefault();
const html = `<div class="form-group mb-3">
<label for="">Name</label>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Name">
<button class="btn btn-outline-danger removeRow" type="button">Remove</button>
</div>
</div>`;
$("#formInputs").append(html);
})
$(document).on('click','.removeRow', function(e){
e.preventDefault();
$(this).parents('.form-group').remove();
});
</script>
Full code
Here is the final code to add inputs dynamically using jQuery.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container py-5">
<form method="post" enctype="multipart/form-data" autocomplete="off" action="">
<div class="row">
<div class="col-lg-12">
<div id="formInputs">
<div class="form-group mb-3">
<label for="">Name</label>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Name">
<button class="btn btn-outline-danger removeRow" type="button">Remove</button>
</div>
</div>
</div>
</div>
</div>
<button class="btn btn-primary submit-btn align-self-end" id="addMore">Add More</button>
</form>
</div>
<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>
<script>
$("#addMore").on('click',function(e){
e.preventDefault();
const html = `<div class="form-group mb-3">
<label for="">Name</label>
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Name">
<button class="btn btn-outline-danger removeRow" type="button">Remove</button>
</div>
</div>`;
$("#formInputs").append(html);
})
$(document).on('click','.removeRow', function(e){
e.preventDefault();
$(this).parents('.form-group').remove();
});
</script>
</body>
</html>
Conclusion:
We have added jQuery and Bootstrap CDN links to start our working then we have created a simple HTML form using bootstrap styling. Bootstrap is not compulsory to add you can use your custom CSS code to style your form. We have added a few lines of jQuery code to handle adding and removing behavior of the inputs dynamically. You can use JavaScript ES6 also instead of jQuery.
I hope it will help you.
Happy Coding :)