如何在Javascript中为动态创建的输入字段添加唯一ID?

时间:2016-03-17 10:58:58

标签: javascript jquery dynamically-generated

我正在使用javascript动态创建输入字段,表单上允许的限制为10。我需要做的是确保将这些字段提交到正确的位置,为他们提供正确的ID。我的问题是我该怎么做?

$(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--;
    })
});

每个输入框都有一个像#34; data_item_1&#34; ,&#34; data_item_2&#34;,&#34; data_item_3&#34;等等。我不知道如何做到这一点。

2 个答案:

答案 0 :(得分:4)

您可以使用x之类的全局变量来生成唯一ID。您可以使用x,但在递减x时,您可能需要使用单独的变量。

$(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

您的代码就像

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
    }
});

答案 1 :(得分:-1)

在点击事件

中尝试此行
$(wrapper).append('<div class="clonedInput"><input id="data_item_'+x+'" type="text" name="mytext[]"/><a href="#" class="remove_field">Remove</a></div>');