У меня есть следующий код. Здесь я хочу получить новые строки в таблице, нажав кнопку " Добавить", но это моя проблема. Я могу получить все текстовые поля в одну ячейку.
может кто-нибудь сказать мне, какую ошибку я здесь сделал?
HTML:
<h3> Adding Next Rows </h3>
<div class="common" style="width:1040px; -overflow-x:scroll; padding: 5px 5px 0 5px;">
<table id="maintable" width="50%" cellpadding="0" cellspacing="0" class="pdzn_tbl1"
border="#729111 1px solid">
<tr>
<th align="center">Roll No</th>
<th align="center">First Name</th>
<th align="center">Last Name</th>
</tr>
<?php $t_row=3; for($i=1;$i<=$t_row;$i++) { ?>
<tr id="rows">
<div style="padding-left: 5px">
<td style="padding:5px;">
<input type="text" name="rollno<? $i ?>" />
</td>
<td style="padding:5px;">
<input type="text" name="firstname<? $i ?>" />
</td>
<td style="padding:5px;">
<input type="text" name="lastname<? $i ?>" />
</td>
</div>
</tr>
<? } ?>
<div id="addgroup">
<div id="add_div1"></div>
<table>
<br />
<input type="button" name="add" value="+Add" id="addrows" style="color:#3300FF; font-size:16px; "
/>
<input type="hidden" id="hiddenprice" name="hiddenprice" value="3" />
</table>
</div>
JQuery:
var $ = jQuery.noConflict();
$("#addrows").click(function () {
if (document.getElementById("hiddenprice").value == "") {
imagecounter = 4;
} else {
imagecounter = parseFloat(document.getElementById("hiddenprice").value) + 1;
}
//imagecounter=4;
var newImageDiv = $(document.createElement('div'))
.attr("id", 'add_div' + imagecounter);
/*onchange="return fn_productname(this.value,\'prdname'+imagecounter+'\')"*/
newImageDiv.after().html('<table width="100%" cellpadding="0" cellspacing="0" class="pdzn_tbl1" border="0">' + '<tr>' + '<td style="padding:5px;" >' + '<input type="text" name="rollno<? $i ?>" />' + '</td>' + '<td style="padding:5px;">' + '<input type="text" name="firstname<? $i ?>" />' + '</td>' + '<td style="padding:5px;">' + '<input type="text" name="lastname<? $i ?>" />' + '</td>' + '</tr>' + '</table>');
newImageDiv.appendTo("#maintable");
document.getElementById("hiddenprice").value = imagecounter;
imagecounter++;
});
вот моя страница jsfiddle.
Вот скрипка
Где я только что внес минимальные изменения в ваш код, чтобы вы могли видеть, что по-другому:
В основном
<div id="addgroup">
был слишком ранним на странице (переместил его ниже <table id="maintable"
), и он также был закрыт странным образом, содержащий закрывающий тег <table>
.
так что теперь часть выглядит следующим образом:
</table>
<div id="addgroup">
</div>
<br />
чтобы он выглядел как ваша первая строка, я также добавил настройку стиля с вашей основной таблицы на другие таблицы, которые вы добавляете.
newImageDiv.after().html('<table cellpadding="0" width="50%" cellspacing="0" class="pdzn_tbl1" border="#729111 1px solid">'+
'<tr>'+
'<td style="padding:5px;" >'+'<input type="text" name="rollno<? $i ?>" />' + '</td>' + '<td style="padding:5px;">'+ '<input type="text" name="firstname<? $i ?>" />'+'</td>'+'<td style="padding:5px;">'+'<input type="text" name="lastname<? $i ?>" />'+'</td>'+'</tr>'+'</table>');
(Имейте в виду, что, добавляя целые таблицы, большую часть времени не очень хорошо, лучше иметь только 1 таблицу и добавлять к ней строки...)
Здесь демо
$("#add_new").click(function () {
$("#maintable").each(function () {
var tds = '<tr>';
jQuery.each($('tr:last td', this), function () {
tds += '<td>' + $(this).html() + '</td>';
});
tds += '</tr>';
if ($('tbody', this).length > 0) {
$('tbody', this).append(tds);
} else {
$(this).append(tds);
}
});
});
addnew row
часть кода функциональности addnew row
[Проверить эту ссылку] [1]
[1]: http://jsfiddle.net/4KrwY/47/
Этого вы ожидали?
tr
в maintable является стандартной практикой,