添加和删​​除项目,保持对计数器和文本列表的控制附加

时间:2017-07-17 00:31:08

标签: jquery

好的,如果有人可以帮我修复我的代码:

我在使其值得工作方面取得了很好的进展,我可以添加和删除元素,而计数器似乎正在重置

问题在于:

我开始添加项目,他们获得增量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之后添加的

1 个答案:

答案 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>

希望这有帮助! :)