Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I add unique IDs to dynamically created input fields in Javascript?

I am using javascript to create input fields dynamically with a limit of 10 allowed on my form. What I need to do to ensure these fields are submitted to the correct place is give them the right ID. My question is how do I do this?

$(document).ready(function () {
    var max_fields = 10; //maximum input boxes allowed
    var wrapper = $(".input_fields_wrap"); //Fields wrapper
    var add_button = $(".add_field_button"); //Add button ID
    var x = 1; //initlal text box count

    var num = new Number;
    var newNum = num + 1;        

    /*if (x = max_fields) {
        alert("You can't add anymore fields.")   
    }
    */

    $(add_button).click(function (e) { //on add input button click
        e.preventDefault();
        if (x < max_fields) { //max input box allowed
            x++; //text box increment
            $(wrapper).append('<div class="clonedInput"><input id="" type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
        }
    });

    $(wrapper).on("click", ".remove_field", function (e) { //user click on remove text
        e.preventDefault(); $(this).parent('div').remove(); x--;
    })
});

It would be nice for each input box to have an ID like "data_item_1" , "data_item_2", "data_item_3" etc etc. I'm not sure on how to do this though.

like image 610
Yanayaya Avatar asked Mar 17 '16 10:03

Yanayaya


1 Answers

You can use global variable like x to generate unique ids. You could have used x but as you are decrementing x so you may need to use separate variable.

$(wrapper).append('<div class="clonedInput"><input id="data_item_'+itemIndex+'"  type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box

You code would be like

var itemIndex = 2;
$(add_button).click(function (e) { //on add input button click
    e.preventDefault();
    if (x < max_fields) { //max input box allowed
        x++; //text box increment

          $(wrapper).append('<div class="clonedInput"><input id="data_item_'+ itemIndex++ +'"  type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>'); //add input box
    }
});
like image 162
Adil Avatar answered Oct 13 '22 12:10

Adil