2012-04-06 48 views
0

我想克隆一个窗体并从(例如)#form更改窗体名称,当克隆到#窗体并对输入执行相同操作时,我确实坚持如何做到这一点!任何帮助将非常感谢,因为我花了所有的日子试图弄清楚。这里是我的代码:如何增加jquery中的.clone()的值

HTML:

<div class="avail"> 
<form action="submit.php" id="form1" method="post"> 
<input type="text" name="input1" /> 
<input type="text" name="anotherinput1" /> 
<input type="text" name="onemoreinput1" /> 
<input type="submit" name="submit1" value="submit" /> 
</form> 
</div> 

<input type="submit" value="+" id="copy" /> 

JQUERY(用于克隆div和表格):

$("#copy").click(function(e) { 
     $(".avail").clone().removeAttr('id').insertBefore(this); 
     e.preventDefault(); 
    }); 

请,如果有人知道如何做到这一点,我将不胜感激SOOOO多!

+0

一个更好的问题是为什么你需要的ID,并会不是n没有它,如果更简单? – 2012-04-06 00:35:44

回答

1

您可以只计算您有多少有效对象,并将其用作新表单ID的运行计数。

$("#copy").click(function(e) { 
    var avails = $(".avail"); 
    var cnt = avails.length + 1; 
    avails.eq(0).clone().insertBefore(this).find("form").attr("id", "form" + cnt); 
    e.preventDefault(); 
}); 

你可以看到它在这里工作:http://jsfiddle.net/jfriend00/9CU85/

如果您还需要在input元素的name属性更新的数字,那么你可以使用此代码,这样做也:

$("#copy").click(function(e) { 
    var avails = $(".avail"); 
    var cnt = avails.length + 1; 
    avails.eq(0).clone().insertBefore(this) 
     .find("form").attr("id", "form" + cnt) 
     .find("input").each(function() { 
      this.name = this.name.replace(/\d+/, cnt); 
     }); 
    e.preventDefault(); 
});​ 

您可以在这里看到这样一个工作:http://jsfiddle.net/jfriend00/SKjMN/

+0

你真了不起!非常感谢!!我花了好几天的时间想清楚这一点..你真的救了我的屁股。感谢您花时间回答! – liveandream 2012-04-06 15:59:43

0
$('#copy').click(function(e){ 
    var formNode = $('.avail form')[0]; 
    var idAttibute = $(formNode).attr('id'); 
    var id = id.charAt(idAttibute.length-1); 

    var copy = $(".avail").clone().removeAttr('id'); 
    $(copy).find('form').attr('id', 'form' + id); 
    $(copy).insertBefore(this); 

});