2015-11-07 46 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