使用jQuery删除动态列表中的最后一个输入字段

时间:2016-08-02 09:14:40

标签: jquery html add form-fields

我如何设法删除最后<div><input type="text" name="mytext[]"></div>甚至从“顶部”按钮删除?当我创建许多字段时,当我单击“删除它们上面的glyphicon”时,它会删除所有字段,而不是最后一个字段。

当我创建新字段时单击字段右侧的删除按钮时,它会删除该字段,但我也要从顶部按钮中删除

<div class="input_fields_wrap">
    <button class="add_field_button">
        <span class="glyphicon glyphicon-plus"></span>
    </button>
    <button class="remove_field" ><span class="glyphicon glyphicon-trash"></span>
    </button>
    <div><input type="text" name="mytext[]"></div>
</div>
$(document).ready(function () {
    var max_fields = 10; //maximum input boxes allowed
    var wrapper = $(".input_fields_wrap"); //Fields wrapper
    var add_button = $(".add_field_button"); //Add button ID
    var x = 1; //initlal text box count
    $(add_button).click(function (e) { //on add input button click
        e.preventDefault();
        if (x < max_fields) { //max input box allowed
            x++; //text box increment
            $(wrapper).append('<div><input type="text" name="mytext[]"/><a href="#" class="remove_field">\n\
                                <button ><span class="glyphicon glyphicon-trash"></button>\n\
                                </span></a></div>'); //add input box
        }
    });
    $(wrapper).on("click", ".remove_field", function (e) { //user click on remove glyphicon
        e.preventDefault();
        $(this).parent('div').remove();
        x--;
    })
});

2 个答案:

答案 0 :(得分:2)

要解决此问题,您可以使用nextAll('div:last')。试试这个:

$wrapper.on("click", ".remove_field", function(e) { //user click on remove glyphicon
    e.preventDefault();
    $(this).nextAll('div:last').remove();
    x--;
})

Working example

请注意,我稍微修改了JS,以至于你没有对你的jQuery对象进行双重包装,而且我还略微修改了HTML,因此即使不使用glyphicons也很明显是添加/删除按钮。 / p>

答案 1 :(得分:0)

你应该找到这个父母的最后一个孩子并将其删除。

$(wrapper).on("click", ".remove_field", function (e) { //user click on remove glyphicon
  e.preventDefault();
  $(this).parent().children('div:last-child').remove();
  x--;
})