2012-04-06 8 views
0

Ich versuche, ein Formular zu klonen und ändern Sie den Formularnamen von (zum Beispiel) #form und wenn geklont zu # form1 und tun Sie das gleiche auf die Eingaben, und ich bin wirklich fest, wie man das macht! Jede Hilfe wäre sehr geschätzt, da ich den ganzen Tag versucht habe, es herauszufinden. Hier ist mein Code:Wie Werte auf .Clone() in jquery inkrementieren

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 (für die Klonierung des div und Form):

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

Bitte, wenn jemand weiß, wie dies zu tun, würde ich es zu schätzen wissen soooo viel !

+0

eine bessere Frage ist zu fragen, warum müssen Sie die ID und das würde nicht l Ist es einfacher ohne es? –

Antwort

1

Sie können einfach zählen, wie viele verfügbare Objekte Sie haben und diese als laufende Zahl für die neue Formular-ID verwenden.

$("#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(); 
}); 

Sie können es hier sehen arbeiten: http://jsfiddle.net/jfriend00/9CU85/

Wenn Sie auch die Zahlen auf den name Attribute der input Elemente aktualisieren müssen, dann können Sie diesen Code verwenden, dass auch tun:

$("#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(); 
});​ 

können Sie diese eine Arbeit sehen hier: http://jsfiddle.net/jfriend00/SKjMN/

+0

Sie sind erstaunlich! Ich danke dir sehr!! Ich habe tagelang versucht, das herauszufinden ... du hast mir wirklich den Hintern gerettet. Danke, dass du dir die Zeit genommen hast zu antworten! – liveandream

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); 

});