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

5

我正在使用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--;
    })
});

每个输入框都有像"data_item_1"、"data_item_2"、"data_item_3"等ID会很好。但我不确定如何实现。
2个回答

6

您可以像使用全局变量 x 一样来生成唯一的id。但由于您正在递减 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
    }
});

这里的 itemIndex 是什么? - itzmukeshy7
初始化 itemIndex = 2? - Adil
太好了,现在一切都正常了,非常感谢。我的初始方法是错误的,这种方式更加简洁。我有点过于思考我的概念了。 - Yanayaya
虽然这种方法可行,但我注意到删除文本输入可能会使编号不同步,并且重要的是它仅保持在1到10之间。删除输入并重新添加它们也可能导致ID重复。是否有解决方法,或者我应该提出一个单独的问题? - Yanayaya
如果需要输入序列,则可以使用jQuery索引函数,还有许多其他方法可以完成这种操作。 - Adil
显示剩余2条评论

0

在点击事件中尝试这行代码

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

如果用户删除了某些项并且增加了其他项,例如,如果用户添加了3个项目并删除了第2个项目,x-- 将值设置为3。现在,当用户添加新项目时,两个字段将具有相同的 ID(data_item_3),根据您的答案,这将导致 ID 重复。 - itzmukeshy7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接