Open In App

How to Dynamically Add Select Fields Using jQuery?

Last Updated : 20 May, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Select Fields can be added dynamically using jQuery. This increases the flexibility and interactivity of web forms, allowing users to add or remove options as needed. In this article, we will learn two different approaches to Dynamically Add Select Fields Using jQuery.

These are the following approaches:

Using jQuery append()

In this approach, we are using jQuery's append() method to dynamically add select fields to the HTML document. When the "Add Select Field" button is clicked, a new <select> element with options for "Orange" and "Grape" is appended to the #selectContainer div.

Example: The below example uses jQuery append() to Dynamically Add selected Fields Using jQuery.

HTML
<!DOCTYPE html>
<html lang="en">

<head>
    <title>Example 1</title>
    <script src=
"https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>

<body style="font-family: Arial, sans-serif; 
             padding: 20px;">
    <h1 style="color: green; 
               text-align: center;">GeeksforGeeks</h1>
    <h3 style="text-align: center;">Approach 1: Using jQuery append()</h3>
    <h4 style="text-align: center;">Select a Fruit:</h4>
    <div id="selectContainer" 
         style="margin: 20px auto; width: fit-content;">
        <select name="fruit" 
                style="padding: 5px;">
            <option value="apple">Apple</option>
            <option value="banana">Banana</option>
        </select>
    </div>
    <button id="addSelect" style="display: block;
                                  margin: 20px auto;
                                  padding: 10px 20px; 
                                  cursor: pointer;">
        Add Select Field
    </button>
    <script>
        $(document).ready(function () {
            $('#addSelect').on('click', function () {
                $('#selectContainer').append(
'<select name="fruit" style="padding: 5px;"><option value="orange">Orange</option><option value="grape">Grape</option></select>'
                );
            });
        });
    </script>
</body>

</html>

Output:

1

Using jQuery clone()

In this approach, we are using jQuery's clone() method to duplicate the initial select field. Upon clicking "Add Select Field," the script clones the select field and appends it to the container, ensuring new select fields are dynamically added based on user input for the number of elements and their values.

Example: The below example uses jQuery clone() to Dynamically Add Select Fields Using jQuery.

HTML
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Example 2</title>
        <style>
            body {
                font-family: Arial, sans-serif;
                padding: 20px;
                text-align: center;
            }
    
            #selectContainer {
                margin: 20px auto;
                width: fit-content;
            }
    
            select,
            input[type="number"],
            input[type="text"],
            button {
                margin: 5px;
                padding: 8px;
                border-radius: 5px;
                border: 1px solid #ccc;
                box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
            }
    
            .row {
                display: flex;
                justify-content: center;
                align-items: center;
                flex-wrap: wrap;
            }
    
            .row>* {
                margin: 5px;
            }
        </style>
        <script src=
"https://code.jquery.com/jquery-3.6.0.min.js"></script>
    </head>
    
    <body>
        <h1 style="color: green;">GeeksforGeeks</h1>
        <h3>Approach 2: Using jQuery clone()</h3>
        <h4>Select a Fruit:</h4>
        <div id="selectContainer">
            <select name="fruit">
                <option value="apple">Apple</option>
                <option value="banana">Banana</option>
            </select>
        </div>
        <div class="row">
            <label for="numElements">Number of Elements
                in Select Fields:</label>
            <input type="number" id="numElements" min="1" value="1">
        </div>
        <div class="row">
            <label for="elements">Elements of
                Select Fields:</label>
            <input type="text" id="elements" 
                   placeholder="Enter elements separated by commas">
        </div>
        <div class="row">
            <button id="addSelect">Add Select Field</button>
        </div>
        <script>
            $(document).ready(function () {
                $('#addSelect').on('click', function () {
                    const numElements = $('#numElements').val();
                    const elements =
                        $('#elements').val().split(',').map(element => element.trim());
                    if (numElements > 0 && elements.length > 0) {
                        const selectField = $('#selectContainer select:first-child');
                        const clonedSelect = selectField.clone();
                        for (let i = 0; i < numElements; i++) {
                            if (!selectField.find(`option[value=
                               "${elements[i]}"]`).length &&
                                !clonedSelect.find(`option[value=
                                "${elements[i]}"]`).length) {
                                clonedSelect.append(
                                    `<option value="${elements[i]}">${elements[i]}</option>`);
                            }
                        }
                        $('#selectContainer').append(clonedSelect);
                        $('#numElements').val('1');
                        $('#elements').val('');
                    } else {
                        alert('Please enter valid values!');
                    }
                });
            });
        </script>
    </body>
</html>

Output:

2(1)

Next Article
Article Tags :

Similar Reads