0
<table id="invoice">
<tr>
<th>Quantity</th>
<th>Item</th>
<th><input type="button" id="addnew" name="addnew" value="Add Row" />
</th>
</tr>
<tr id="id1">
<td><input id="quantity1" name="quantity[]" tabindex="1" type="text" value="" /></td>
<td><select id="rate1" name="rate[]" tabindex="2" value="">
<option value="">SELECT</option>
<option value="1">ONE</option>
<option value="2">TWO</option>
</select></td>
<td><input id="remove1" name="remove[]" tabindex="3" type="button" value="Remove Row"class="remove"/></td>
</tr>
</table>
我可以使用下面的腳本
var next = 2;
function addrow(table,add)
{
$(add).bind('click', function() {
var $last = $(table + ' tr:last');
var last_row = $last.clone();
$(last_row).find(":input").each(function() {
var store = $(this).attr("id");
var new1 = store.replace(/1/, next);
$(this).attr("id",new1);
});
last_row.appendTo($(table))
$(table+" tr:last").hide().fadeIn('slow');
next++;
});
}
addrow('#invoice','#addnew');
添加行上面的腳本克隆第二行並追加到實際需要的表中。但問題是,如果用戶在文本框的第二行輸入一些值,然後單擊addrow,它將在新行中將值複製到值。爲了克服這一點,我只是將腳本改成了字母。
所以我改劇本以下
var next = 2;
function addrow(table,add)
{
var $last = $(table + ' tr:last');///changed this line
var last_row = $last.clone(); /// changed this line
$(add).bind('click', function() {
$(last_row).find(":input").each(function() {
var store = $(this).attr("id");
var new1 = store.replace(/1/, next);
$(this).attr("id",new1);
});
last_row.appendTo($(table))
$(table+" tr:last").hide().fadeIn('slow');
next++;
});
}
這增加了只有一行,它只是改變了最後一排,但不能添加比新行了。
任何人都可以糾正這第二個腳本,因爲這對我的項目來說是完美的,因爲許多其他腳本都與此相關聯。
+1我認爲本地克隆是要走的路。總是以其初始狀態中的行的重複開始。如果需要,可以複製值。 ...我只是指出該行的ID是重複的,但這是來自原始代碼的一個側面問題。 – user113716 2011-01-30 15:42:40