gpt4 book ai didi

javascript - jquery自动完成功能不适用于克隆行动态表单集django

转载 作者:行者123 更新时间:2023-12-01 05:26:48 26 4
gpt4 key购买 nike

我正在使用 Jquery 自动完成功能,并且在第一行中工作正常。动态添加的行没有自动完成功能。我刚来这地方。

这是动态表单集的代码:

function addForm(btn, prefix) {
var formCount = parseInt($('#id_' + prefix + '-TOTAL_FORMS').val());
var row = $('.dynamic-form:first').clone();
$(row).removeAttr('id').insertBefore($('.dynamic-form:last')).children('.hidden').removeClass('hidden');
$(row).children().not(':last').children().each(function() {
updateElementIndex(this, prefix, formCount);
$(this).val('');
});

$(row).find('.delete-row').click(function() {
deleteForm(this, prefix);
});

$('#id_' + prefix + '-TOTAL_FORMS').val(formCount + 1);
return false;
}

这是初始化自动完成的代码:

$('.autocomplete).each(function() {
var datacontent = $("#"+this.id).attr('data-content');
$("#"+this.id).autocomplete({
source: datacontent, // json format
select: function(event, ui) {
$("#"+this.id+"_id").val(ui.item.value);
$("#"+this.id).val(ui.item.label);
return false;
},
change: function(event, ui) {
if ($("#"+this.id).val().length == 0) {
$("#"+this.id+"_id").val('');
}
}
});
});

最佳答案

尝试使用

var row = $('.dynamic-form:first').clone(true);

而不是

var row = $('.dynamic-form:first').clone();

通过在clone()中设置true,它可以使用事件处理程序进行克隆。

并且您可以使用事件处理程序而不是每个函数

$('.autocomplete').on("click",function() {
var datacontent = $("#"+this.id).attr('data-content');
$("#"+this.id).autocomplete({
source: datacontent, // json format
select: function(event, ui) {
$("#"+this.id+"_id").val(ui.item.value);
$("#"+this.id).val(ui.item.label);
return false;
},
change: function(event, ui) {
if ($("#"+this.id).val().length == 0) {
$("#"+this.id+"_id").val('');
}
}
});
});

您可以根据您的要求更改点击each 函数适用于已生成的 dom 元素,但是当您使用事件处理程序时,它将事件附加到已生成的 dom 元素以及动态生成的元素。

关于javascript - jquery自动完成功能不适用于克隆行动态表单集django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39326326/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com