如何使用jQuery在克隆输入上增加名称attrVal数组?

我正在尝试为我的婚礼设置一个RSVP表格,你可以一次克隆几个字段到一个以上的客户RSVP( http://adrianandemma.com/ )。 这些克隆的字段包括几个用于“参加是/否”的单选按钮。

当我克隆单选按钮时,我试图将其name属性从name =“coming [0]”增加到name =“coming [1]”,name =“coming [2]”,name =“coming [3] “等

我需要尝试这样做,因为每个克隆的单选按钮都需要具有唯一的名称属性,否则您不能一次选择多个是/否答案。 这意味着我不能只使用一个空数组name =“coming []”。

我想我已经部​​分存在了,因为当我克隆字段时,我的JS正在修改每个克隆字段为name =“coming [0] [1]”,name =“coming [0] [2]”,name = “未来[0] [3]”。

我只需要尝试将其删除[0],但无法解决如何使用jQuery执行此操作。

这是我的HTML表单:

Name

Attending?

<input type="text" name="name[0]" id="name" value="" tabindex="1" />
Add further guest

这是我的jQuery:

 $(document).ready(function() { $('.addguest').on('click', function(e) { e.preventDefault(); // // get the current number of ele and increment it // var i = $('.guest').length + 1; $('.guest').first().clone().find("input").attr('id', function(idx, attrVal) { return attrVal + i; // change the id }).attr('name', function(idx, attrVal) { return attrVal+'['+i+']'; // change the name }).val('').removeAttr('checked').end().find('label').attr('for', function(idx, attrVal) { return attrVal + i; // change the for }).end().insertBefore(this); }); }); 

这是我的表单流程代码,似乎没有通过单选按钮值:

 <?php $name = $_POST['name']; $coming = $_POST['coming']; $errors = ""; if(!@$_POST['name']) { $errors .= "Please enter your name.
\n"; } if(!@$_POST['coming']) { $errors .= "Please enter yes or no for attending.
\n"; } if(@$_POST['emailaddress'] != '') { $spam = '1'; } if (!$errors && @$spam != '1') { $to = "example@xyz.com"; $subject = "Wedding RSVP"; $headers = "From: noreply@adrianandemma.com"; $body = "The following RSVP has been sent via the website.\n\n"; for($i=0; $i

根据siddiq上面的评论,这应该这样做:

 $('.addguest').on('click', function(e) { e.preventDefault(); var i = $('.guest').length + 1; $('.guest').first().clone().find("input").attr('id', function(idx, attrVal) { return attrVal + i; }).attr('name', function(idx, attrVal) { return attrVal.replace('[0]','')+'['+i+']'; // fix is here }).val('').removeAttr('checked').end().find('label').attr('for', function(idx, attrVal) { return attrVal + i; }).end().insertBefore(this); }); 

尽量不要实现一般function,而是实现namecoming的自定义function

忘记return attrVal+'['+i+']'并将其替换为return "name["+i+"]"return "coming["+i+"]"