使用jQuery处理克隆。使用我当前的代码如果用户单击addmore按钮克隆工作正常,ID和名称。生成id是错误的,它是初始id被克隆,重复id cloned1,cloned12,cloned123。但我想要Cloned,Cloned1,Cloned2,Cloned3等。,而我的第二个问题是,如果我点击addmore按钮克隆一个没有下来它就是顶部(安排克隆问题)
请帮助我解决任何问题
这是jquery代码
//dynamic row for Attachment Table
$(document).on("click", ".attch_add_button", function () {
var i=$('.cloned-row4').length;
$(".cloned-row4:last").clone().insertAfter(".cloned-row4:last").attr({
'id': function(_, id) { return id + i },
'name': function(_, name) { return name + i }
}).end().find('[id]').val('').attr({ 'id': function(_, id) { return id + i }
});
if(i < $('.cloned-row4').length){
$(this).closest(".attch_add_button").removeClass('btn_more attch_add_button').addClass('btn_less');
}
i++;
return false;
});
$(document).on('click', ".btn_less", function (){
var len = $('.cloned-row4').length;
if(len>1){
$(this).closest(".btn_less").parent().parent().parent().remove();
}
});
这是小提琴link
请帮助我
提前致谢
答案 0 :(得分:1)
在添加新号码之前,您应该从末尾删除号码。像这样:
'id': function (_, id) {
return id.replace(/\d+$/, '') + i
},
'name': function (_, name) {
return name.replace(/\d+$/, '') + i
}
您还需要确保如果有人删除了克隆...您不会复制ID(如果有10个克隆,则会有一个ID为9的克隆...如果有人删除了一个并创建一个新的,将有另一个ID为9.)这可以通过首先获得最高ID来修复...像这样
var i = 0;
$('.cloned-row4').each( function() {
var match = this.id.match(/\d+$/);
var num = match ? Number.parseInt(match[0]) : 0;
if(i < num+1) {
i = num+1;
}
});
答案 1 :(得分:0)
为什么要获取clonedx
值,进行操作然后将其更改为其他值?如果你知道模式将是&#34; ClonedX&#34;你不能直接使用它吗?那么最简单的方法就是
'id': "cloned" + i,
'name': "cloned" + i
答案 2 :(得分:0)
您只需在用户点击时调用一个功能添加更多按钮。
function setCustomAttr(){
$('.cloned-row4').each(function(i,v){
$(this).attr('id','cloned'+i);
$(this).attr('name','cloned'+i);
});
}