0

フォームのクローンを作成してフォーム名を (たとえば) #form から変更し、#form1 にクローンを作成して入力に対して同じことを実行しようとしていますが、これを行う方法に本当にこだわっています! 私はそれを理解しようとして一日中過ごしたので、どんな助けも大歓迎です。これが私のコードです:

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

誰かがこれを行う方法を知っているなら、私はそれをとても感謝しています!

4

2 に答える 2

2

所有しているアベイルズ オブジェクトの数をカウントし、それを新しいフォーム 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/

name要素の属性の数値も更新する必要がある場合は、次のinputコードを使用してそれを行うこともできます。

$("#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/

于 2012-04-06T03:02:41.900 に答える
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);

});
于 2012-04-06T00:37:57.733 に答える