2013-10-01 4 views
0

У меня есть следующий код. Здесь я хочу получить новые строки в таблице при нажатии Кнопка добавления это работает, но в чем моя проблема: я могу получить все текстовые поля в одну ячейку.следующий ряд добавлен в одну ячейку

может кто-то сказать мне, какую ошибку я здесь сделал ?

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>&nbsp; 
      <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 страница ,.

ответ

1

Вот fiddle

Где я только что сделал минимальные изменения в код, так что вы можете увидеть, что разные:

В основном

<div id="addgroup"> был слишком рано на странице (перемещался ниже <table id="maintable") , а также был закрыт странный путь, содержащий закрывающий тег <table>.

так что часть теперь выглядит следующим образом:

</table> 
<div id="addgroup"> 
</div> 
    &nbsp; 
<br /> 

, чтобы сделать его выглядеть ваш первый ряд, я также добавил настройки стиля от вашего maintable к другим таблицам вы добавляете.

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 таблицу и добавить строки к нему ...)

+0

** + 1 **, хотя добавление целая таблица только для одной строки неправа, Op нужно добавить строку, поэтому добавьте 'tr' в maintable стандартную практику, –

+0

Я согласен 100% :) – DrCopyPaste

+0

awesome .. tis - это то, чего я действительно ожидал от благодарности. конечно, я буду держать ваши идеи в виду в дальнейшем .. –

1

Вот демо

JSFIDDLE DEMO

$("#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); 
     } 
    }); 
}); 
+0

Я принимаю это, но я хочу получить результат по выпрямлению кода. –

+0

@ user2720205: всегда вводите конкретную часть кода, которая не работает, потому что ее легко читать другим, так как в их нет необходимости добавлять целое ajax() funtion, просто добавьте код функции функциональности addnew row –

+0

, но есть больше;) в оригинальной скрипке были добавлены целые таблицы в div, вы изменили это только на добавляемые строки. теперь есть некоторые различия в стилях ... – DrCopyPaste

0

[Проверить эту ссылку ] [1]

[1]: http://jsfiddle.net/4KrwY/47/ 

это вы ожидали для?

+0

, поэтому вы просто добавляете фиктивный текст для учетной записи для кода, который вы должны ввести при предоставлении jsfiddles? ;/ – DrCopyPaste

+0

Нет, все будет динамично, будет – Ramya

+0

Вы имеете в виду динамически на другой странице? :) Причина, по которой ответы должны содержать код, страницы, на которые вы ссылаетесь, могут отключиться, а ответы должны быть полностью понятны без открытия ссылок, это не имеет ничего общего с динамическим или каким-либо другим – DrCopyPaste

Смежные вопросы