我有两个文本框和一个添加按钮。单击“添加”时,它会在文本框下方生成一个表格,每行都有一个“删除”按钮。当你单击删除它删除表行但不删除数组中的内容(至少我不认为)。
如何删除内容呢?目前,当我点击添加然后删除一些它搞砸了我的数据库表,通过插入第一个罚款但然后通过不插入它,或只是添加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;
}
});
答案 0 :(得分:0)
删除行时,使用.splice
也将其从数组中删除:
.click(function() {
$tr.remove();
locations.splice(locations.indexOf(location), 1);
return false;
})
请注意,如果location
不在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) + "]";
});
});