删除文本框后,如何重新编号其余的文本框。名字属性?

时间:2015-10-16 20:56:16

标签: jquery html paypal

技术上粘贴的代码在我编写的jquery代码点击时起作用的意义上起作用。 (不是js / jquery人)

这是一个小伙伴:http://jsfiddle.net/t2t1mxqd/

然而,问题是这是paypal的东西,如果你注意到每个输入(隐藏和隐藏)都有编号。

var button = document.getElementById("button1");
var i;
var max = Number.MAX_VALUE;
//The loop
for(i = 0; i < max; i++) {
 button.textContent = i;
}
button.style.backgroundColor = "red";

比如以第一个为例:它在隐藏的一个中有 <div class="removal"> <input type="hidden" name="item_name_1" value="Program 1">Program 1 <input class="removal" type="text" name="amount_1" value="10.00"> <button type="button">Remove</button> </div> ,而在非隐藏的一行中有item_name_1

如果从底部向上移除它就不成问题,即数字从上到下按顺序编号。

如果他们被随机删除或自上而下删除,则会出现问题。

然后这些数字显然不是从amount_1等开始的

如何重写代码,当一个人选择说,删除程序5时,item_name_1item_name_n的其余属性会被顺序重写,或者仍然起作用?

有什么建议吗?

谢谢。

name_n

2 个答案:

答案 0 :(得分:2)

这将使input名称保持顺序,而不会影响其他任何内容,我认为这是您的目标:

$('.removal button').click(function() {
  $(this).parent().remove();

  $('.removal [type="hidden"]').each(function(idx) {
    $(this).attr('name', 'item_name_'+(idx+1));
  });

  $('.removal [type="text"]').each(function(idx) {
    $(this).attr('name', 'amount_'+(idx+1));
  });
});

您还可以通过删除此代码来清理您的代码:

<br /><br />

...并在removal类中添加下边距:

.removal {
  margin-bottom: 1em;
}

这样,当你删除行时,你不会以空格结束。

Fiddle

答案 1 :(得分:0)

有关这方面的内容,但没有经过测试。概念是可用的。

$(document).ready(function() { 
    $(".removal").click(function() {
        $(this).remove();

         for(var i =0;i<$(".remove").length;i++)
    {
        var $inputs = $(this).children("input");

        $inputs.each(function(){

            var thisType = $(this).attr("type");

            switch(thisType){

                case "text":

                    $(this).attr("name", "name_" + i);
                    $(this).val(i + ".00");
                    break;
                case "hidden":
                     $(this).attr("name", "item_name_" + i);
                    $(this).val("Program " + i);
                    break;
            }            
        });

    }
    });

});