自动完成弹出窗口在克隆元素上无法正常工作

时间:2017-10-26 12:50:40

标签: javascript jquery

我无法正确解释,所以我添加了图片,请帮助我,请不要投票。

您好我正在克隆div按钮单击,我也希望克隆元素上的自动完成框。在第一个元素上它工作正常,但在克隆元素上,自动完成框(弹出窗口)显示在第一个元素上,但它应该显示在新创建的文本框上

以下是html代码

<div class="repeatingSection">
<input id="Jobs[0].SampleType" name="Jobs[0].SampleType" type="text" class="form-control classSampleType" placeholder="Sample Name" required />
<a href="#" class="btn btn-warning buttonGray buttonRight addJob">Add Job</a>

以下是用于克隆的js代码

function resetAttributeNames(section) {
    var tags = section.find('input,button'), idx = section.index();
    tags.each(function () {
        var $this = $(this);
        $.each(attrs, function (i, attr) {
            var attr_val = $this.attr(attr);
            if (attr_val) {
                $this.attr(attr, attr_val.replace(/\[\d\]/,'['+(idx-5)+']'))
            }
        })
    })
}

$('.addJob').click(function (e) {
    e.preventDefault();
    var lastRepeatingGroup = $('.repeatingSection').last();
    var cloned = lastRepeatingGroup.clone(true)

    cloned.find("input").val("");

    cloned.insertAfter(lastRepeatingGroup);
    resetAttributeNames(cloned)
});

以下是自动完成的代码

$(".classSampleType").click(function () {
        var index = $(".classSampleType").index(this);

        $("#Jobs\\["+index+"\\]\\.SampleType").autocomplete({
            source: function (request, response) {
                $.ajax({
                    url: "/Lab/GetSampleType",
                    type: "POST",
                    dataType: "json",
                    data: { Prefix: request.term },
                    success: function (data) {
                        response(data);
                    }
                })
            },
            messages: {
                noResults: "", results: ""
            }
        });
    });

作为参考,我添加了图片Reference Image

1 个答案:

答案 0 :(得分:0)

通过进行以下更改为我工作

var cloned = lastRepeatingGroup.clone(true,false)
$(document).on('click','.classSampleType',function () {
    var index = $(".classSampleType").index(this);

    $("#Jobs\\["+index+"\\]\\.SampleType").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: "/Lab/GetSampleType",
                type: "POST",
                dataType: "json",
                data: { Prefix: request.term },
                success: function (data) {
                    response(data);
                }
            })
        },
        messages: {
            noResults: "", results: ""
        }
    });
});