好的,如果有人可以帮我修复我的代码:
我在使其值得工作方面取得了很好的进展,我可以添加和删除元素,而计数器似乎正在重置
问题在于:
我开始添加项目,他们获得增量1,2,3,4,5
然后我将删除第2,3项 - 它会将其重置为1,2,3 [到目前为止很好]
然后我添加另一个,它从1,2,3,5开始 - 看它从5开始而不是4 [这是需要修复的东西:]
这是我的竞赛完成
<script type="text/javascript">
var cnt = 1;
$("body").on("click", ".delrow", function() {
var id = $(this).attr('data-id');
$('.newrow'+id).remove();
cnt--;
resetStuff();
});
function resetStuff() {
cnt = 2;
$(".delrow").each(function() {
$(this).parent().attr('class','newrow'+cnt);
$(this).attr('data-id',cnt);
$(this).parent().find('input:text').each(function() {
var ids = $(this).parent().find('input:text').attr('id');
var getID = ids.split('_');
var getName = getID[0];
var getName2 = getID[1];
$(this).parent().find('input:text').attr('id',getName + '_' + getName2 + '_' + cnt);
$(this).parent().find('input:text').attr('name',getName + '_' + getName2 + '_' + cnt);
})
cnt++;
})
}
$(".addnewrow").click(function() {
cnt++;
$("#tab2").append('<div class="newrow'+cnt+'"><div align="right" class="delrow" data-id="'+cnt+'"><button type="button" class="btn btn-warning mright mtop"><i class="fa fa-trash-o" aria-hidden="true"></i></button></div><div class="col-md-3"><label>First name</label>\
<input id="bill_first_'+cnt+'" class="form-control" name="bill_first_'+cnt+'" data-rule-required="true" data-msg-required="Provide First Name" placeholder="Firstname"/>\
</div></div>');
});
</script>
在上面,我想添加一个文本字段,我可以记录添加的字段,如
1,2,3,4 in textfield
就像这里是我在页面上的初始HTML
<div id="tab2">
<h2>Billing Information</h2>
<div align="right" class="col-lg-12"><span class="addnewrow"><a href="javascript:;" class="btn btn-default">Add New</a></span></div>
<div class="col-md-3">
<label>First name</label>
<input id="bill_first_1" class="form-control" name="bill_first_1" data-rule-required="true" data-msg-required="Provide First Name" placeholder="Firstname" />
</div>
<input type="text" name="listaddress_bill" id="listaddress_bill" value="1">
</div>
对于每个添加和删除,我希望我的输入字段用正确的计数器更新:
listaddress_bill
我尝试添加一些代码但是没有用:
var vals = cnt;
$.each(function() {
if(vals) vals += '^';
vals += $(this).val();
});
$("#listaddress_bill").val(vals);
上面的代码是在cnt++
函数
addnewrow
之后添加的
答案 0 :(得分:0)
您需要做的就是在{/ strong> cnt++
后运行$("#tab2").append()
,而不是之前:
var cnt = 1;
$("body").on("click", ".delrow", function() {
var id = $(this).attr('data-id');
$('.newrow' + id).remove();
cnt--;
resetStuff();
});
function resetStuff() {
cnt = 2;
$(".delrow").each(function() {
$(this).parent().attr('class', 'newrow' + cnt);
$(this).attr('data-id', cnt);
$(this).parent().find('input:text').each(function() {
var ids = $(this).parent().find('input:text').attr('id');
var getID = ids.split('_');
var getName = getID[0];
var getName2 = getID[1];
$(this).parent().find('input:text').attr('id', getName + '_' + getName2 + '_' + cnt);
$(this).parent().find('input:text').attr('name', getName + '_' + getName2 + '_' + cnt);
})
cnt++;
})
}
$(".addnewrow").click(function() {
$("#tab2").append('<div class="newrow' + cnt + '"><div align="right" class="delrow" data-id="' + cnt + '"><button type="button" class="btn btn-warning mright mtop"><i class="fa fa-trash-o" aria-hidden="true"></i></button></div><div class="col-md-3"><label>First name</label>\
<input id="bill_first_' + cnt + '" class="form-control" name="bill_first_' + cnt + '" data-rule-required="true" data-msg-required="Provide First Name" placeholder="Firstname"/>\
</div></div>');
cnt++;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="tab2">
<h2>Billing Information</h2>
<div align="right" class="col-lg-12"><span class="addnewrow"><a href="javascript:;" class="btn btn-default">Add New</a></span></div>
<div class="col-md-3">
<label>First name</label>
<input id="bill_first_1" class="form-control" name="bill_first_1" data-rule-required="true" data-msg-required="Provide First Name" placeholder="Firstname" />
</div>
<input type="text" name="listaddress_bill" id="listaddress_bill" value="1">
</div>
希望这有帮助! :)