2015-11-07 30 views
0

我試圖製作自己的克隆函數,它可以改變克隆輸入的名稱,以便它們可以被PHP收集。正確地重命名克隆的輸入JQuery

在W3C我發現這個簡單的函數來建立從

$("button").click(function(){ 
$("p").clone().appendTo("body"); 
}); 

我修改了它克隆與多個輸入的字段集和它的工作。我進一步嘗試使它重命名和整數不同輸入元素的名稱屬性,現在它甚至不克隆該字段。

這是我到目前爲止。

$("#p20_01_yes").click(function(){ 
var num  = $('.clonedInput').length, 
newNum = new Number(num + 1); 
$("#cloner").clone($("input, textarea, select").each().attr('name'+newNum)).appendTo("#page20"); 
}); 

我只是想張貼HTML片段,但我得到了一個警告信息,告訴我的極限是30,000個字符所以這裏是一個js小提琴,顯示一切。

https://jsfiddle.net/Optiq/krjztsm2/

我構造的JQuery的我沒有,因爲我想通做克隆功能內的重命名會比較合適,然後追加結果的頁面,而不是追加它,然後回去和分離的方式它從其他所有東西中挖掘出來......認爲這對計算機更有意義。這是正確的方式來看待它嗎?

+0

如果你想保持簡單... http://stackoverflow.com/questions/45435 00/form-input-field-names-containing-square-brackets-like-fieldindex –

+1

更好 - http://stackoverflow.com/questions/1137557/using-square-brackets-in-hidden-html-input-fields 。在PHP服務器端,你只需要'name = myName []'沒有計數器。 PHP將爲您構建一組值。 –

+0

有趣,但是如何調用JQuery來創建副本? – Optiq

回答

1

你已經很近了。我不確定我的答案是否能夠完美工作(看到JSFiddle非常混亂),但是您可以稍後調整類和ID。

你只需要你的任務分爲兩個部分:(?和可能的ID以及)

  1. 克隆字段集
  2. 更新輸入元素名稱

下面是一個例子這是如何工作的:

$("#p20_01_yes").click(function(){ 
    var num = $('.clonedInput').length, 
    newNum = new Number(num + 1); 
    var $clonedFieldset = $("#cloner").clone().appendTo("#page20"); 
    $clonedFieldset.find("input, textarea, select ").each(function() { 
     var $item = $(this); 
     $item.attr('name', $item.attr('name') + newNum); 
    }); 
}); 
+0

好吧我只是試過。它再次克隆,但不更新名稱屬性。該控制檯還射出了一堆錯誤。 有這些 未捕獲的ReferenceError的9:$沒有定義 然後它說 遺漏的類型錯誤:$ item.attr不是一個函數 未捕獲的ReferenceError:未定義$ clonedFieldset 未捕獲的ReferenceError:$ clonedFieldset沒有定義 Uncaught TypeError:$ item.attr不是函數 – Optiq

+0

看起來您沒有在頁面上包含jQuery ... – nils

+0

我在jsfiddle中選擇了JQuery2.1.3,並且更新後的版本也隨同一對夫婦一起拋出了相同的錯誤更多的說$ clonedFieldset和$ item不是函數。 – Optiq