0

我有两个文本框和一个添加按钮。当您单击添加时,它会在文本框下方生成一个表格,每行都有一个删除按钮。当您单击删除时,它会删除表格行,但不会从数组中删除内容(至少我不认为)。

我如何让它也删除内容?目前,当我单击添加然后删除一些时,它会通过插入第一个很好但然后通过不插入它或仅添加 1 列来搞乱我的数据库表....如果我不删除任何它工作得很好。

 var $tdRemoveRow = $('<td>').appendTo($tr);
    $('<a>').attr({
        'href': '#',
    'id': 'submit-button'
    }).text("Remove").click(function() {
        $tr.remove();
        return false;
    }).appendTo($tdRemoveRow);

错误必须在上面的代码中的某个地方。有人看到问题吗?

 var locations = [];   
$("#add").click(function() {
    var address = $("#address").val();
    var city = $("#city").val();

    if (address =="" || city =="") {
    $("#locationDeals").text('*Please enter an address and city');
    return false;
} 
else {
codeAddress();
        var $tr = $('<tr>').css({
            'padding': '4px',
            'background-color': '#ddd'
        }).appendTo('#locationDeals');

        var location = [
            address,
            city                
        ];
        locations.push(location);

        for (i = 0; i < 2; i++) {
            var $td = $('<td>').appendTo($tr);
            $('<span>').text(location[i]).appendTo($td);
            $('<input type="hidden">').attr({
                'name': 'loc[' + ctr + '][' + i + ']',
                'value': location[i]
            }).appendTo($td);
        }

        var $tdRemoveRow = $('<td>').appendTo($tr);
        $('<a>').attr({
            'href': '#',
        'id': 'submit-button'
        }).text("Remove").click(function() {
            $tr.remove();
            return false;
        }).appendTo($tdRemoveRow);

        ctr++;

        $("#locationtext").text('');
        return false;
    } 
});
4

1 回答 1

0

删除行时,使用.splice也将其从数组中删除:

.click(function() {
    $tr.remove();
    locations.splice(locations.indexOf(location), 1);
    return false;
})

location请注意,如果不在 inside ,这将无法正常运行locations,但是使用您的代码可以保证不会出现这种情况。


您还应该减少输入名称中的索引(就在删除之前tr):

var index = $tr.index();
$("#tableDailyDeals input[type='hidden']").each(function() {
    this.name = this.name.replace(/\[(\d+)\]/, function(str, number) {
      return "[" + (+number > index ? number - 1 : number) + "]";
    });
});
于 2012-11-03T22:26:04.467 回答