I am pretty new to jquery. I have the following code. Here I want to get new rows in the table by clicking the add button, but I can't get it.,
can someone tell me what mistake I have done here?
<script type="text/javascript">
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);
newImageDiv.after().html('<table width="100%" cellpadding="0"
cellspacing="0" class="pdzn_tbl1" border="0">' +
'<tr><td><input type="text" name="rollno<? $i ?>"/></td>' +
'<td><input type="text" name="firstname<? $i ?>" /></td>' +
'<td><input type="text" name="lastname<? $i ?>" /></td></tr></table>');
newImageDiv.appendTo("#addgroup");
$("tr:last").after(newImageDiv);
document.getElementById("hiddenprice").value = imagecounter;
imagecounter++;
});
</script>
<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>Roll No</th>
<th>First Name</th>
<th>Last Name</th>
</tr>
<?php $t_row=3; for($i=1;$i<=$t_row;$i++) { ?>
<tr id="rows">
<div>
<td><input type="text" name="rollno<? $i ?>"/></td>
<td><input type="text" name="firstname<? $i ?>"/></td>
<td> <input type="text" name="lastname<? $i ?>"/></td>
</div>
</tr>
<? } ?>
<div id="addgroup">
<div id="add_div1"> </div>
</div>
<table>
<input type="button" name="add" value="+Add" id="addrows" />
<input type="hidden" id="hiddenprice" name="hiddenprice" value="3"/>
</table>
</div>
Code Formatted & Edit: Code alignments updated and removed unwanted style codes for better readability
The task is to insert a new row in that table at a certain index using JQuery. Approach: Store the table column value <td> element into the variable. Then use eq() and after() method to insert the row in a table.
Sample DEMO for Adding new row
$("#addrows").click(function () {
$("#mytable").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);
}
});
});
Updated: Here div close at wrong place, it should end before tr close, may be thats the error
<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> // right
</tr>
</div> // wrong
UPDATED DEMO 2
Have a look at Add table row in jQuery
which gives the solution
$('#maintable tr:last').after('<tr><td>...</td><td>...</td><td>...</td><td>...</td></tr>');
As explained here a solution with after
is to be preferred over append
.
jquery
with the approach with getElementById
.http://jsfiddle.net/A5dT6/1/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With