0

我有一个动态复制/删除的表单字段

在这里查看小提琴:http: //jsfiddle.net/obmerk99/y2d4c/6/

在此功能中,我还需要增加字段的名称(和 ID 等),如下所示:

o99_brsa_settings[brsa_dash_wdgt_content][0]
o99_brsa_settings[brsa_dash_wdgt_content][1]
o99_brsa_settings[brsa_dash_wdgt_content][2] ...

它正在工作,但问题是当我添加/删除字段时,当它到达最后一个(实际上是第一个)时,它会给我“未定义”并且不会再添加字段。

要查看问题,您需要使用 add/remove 稍微“玩”一下。

我认为主要问题是如果我们有 [0] 和 [0][2],如何将所有这些保持在同一数组级别

我远非 JS 大师,而且这段代码不知何故是从各种来源组装而成的。但我现在有点卡住了,所以任何帮助都将不胜感激。

4

1 回答 1

1

试试这个方法:

$(function () {
    $(".addScnt").on("click", function () {
        var i = checkNumberOfElements();
        var scntDiv = $("div[id^='widget_dup']:last");
        var prevDiv = scntDiv.clone();
        var newname = $(prevDiv).find("textarea").attr("name").substring(0, $(prevDiv).find("textarea").attr('name').indexOf(']'));

        prevDiv.find('textarea').attr('name', newname + "][" + i + "]");
        prevDiv.find('textarea').attr('id', newname + "][" + i + "]");
        prevDiv.find('label').attr('for', newname + "][" + i + "]");
        prevDiv.attr('id', $(prevDiv).attr('id') + "_" + i);

        $(scntDiv).after(prevDiv);
    });

    $(document).on("click", ".remScnt", function (event) {
        var i = checkNumberOfElements();

        if (i <= 1) {
            return false;
        } else {
            var target = $(event.currentTarget);
            target.parent("div").remove();
        }
    });
});

function checkNumberOfElements() {
    // Number of textareas
    var i = $("textarea[name^='o99_brsa_settings[brsa_dash_wdgt_content]']").length;
    // Number of divs
    // var i = $("div[id^='widget_dup']").length;

    if (typeof i === undefined) {
        return 0;
    } else {
        return i;
    }
}

演示:http: //jsfiddle.net/y2d4c/7/

于 2013-11-01T13:46:06.570 回答