2014-02-19 3 views
2
<table id="mytable"> 

<tr id="gonnaclone"> 
    <td> 
     <input type="text" id ="isim" name="f1" class="large" value = "" /> 
    </td> 
    <td> 
     <input type="checkbox" id ="komut" name="f2" checked/> 
    </td> 
</tr> 

</table> 

Я пытаюсь клонировать строку таблицы, но она идет с тем же значением клонированной строки.Копировать таблицу строк без значений

var table = document.getElementById("mytable"); 
var row = document.getElementById("gonnaclone"); 
var clone = row.cloneNode(true); 
table.appendChild(clone); 

Я пробовал row.cloneNode(false);, но он прекратил работать.

Как я могу сделать значение строки клона пустым?

+0

Почему вы клонирования элементов, которые имеют идентификаторы? – Hrishi

+0

Параметр deep clone по умолчанию ложный, как он перестает работать? Я немного не уверен, что вы подразумеваете, сделав значение строки clone false. Вы имеете в виду клонировать его, но не его детей ? – ioseph

+0

@Hrishi, потому что я не смог найти какой-либо другой метод. – abby

ответ

3

С JQuery вы можете сделать следующее:

$("table").append($("table") 
    .find("#gonnaclone").clone() 
    .find("input").val("").end()); 

Что это на самом деле делает это сделать клон, найти поле ввода, сброс значения входного и добавить его к столу.

Но чтобы сделать его еще лучше, вы должны также удалить идентификатор клонированной строки (в противном случае вы бы дублирующие идентификаторы):

$("table").append($("table") 
    .find("#gonnaclone").clone().removeAttr("id") 
    .find("input").val("").end()); 

Полный пример можно найти на JSFiddle.


Если вы хотите, чтобы заставить этот флажок, чтобы быть в определенном состоянии (проверено/бесконтрольно) можно даже сделать большую цепь:

$("table").append($("table") 
    .find("#gonnaclone").clone().removeAttr("id") 
    .find("input").val("").end() 
    .find("input:checked").attr("checked", false).end()); 

Это фактически неустановленными клонированный строку.

+0

именно то, что я хочу. спасибо – abby

4

Вы можете сделать это таким образом

  var table = document.getElementById("mytable"); 
     var row = document.getElementById("gonnaclone"); 
     var clone = row.cloneNode(true); 

     /** 
      Will Ensure that blank entry are appended in html 
     **/ 
     var InputType = clone.getElementsByTagName("input"); 

     for (var i=0; i<InputType.length; i++){ 
     if(InputType[i].type=='checkbox'){ 
      InputType[i].checked = false; 
     }else{ 
      InputType[i].value='';    
      } 
     } 
     table.appendChild(clone); 
+0

действительно спрашивайте у любого вопроса – sanjeev

+0

да он работает, но он не устанавливает значение флажка – abby

+0

@abby, сделал это для checkbox также – sanjeev

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