0

このコードをクローンに使用しています。

  1. 複製ボタンをクリックすると、このコードを変更したいと思います。新しく生成されたすべての動的divの複製削除ボタンを何度も複製します。

  2. 最初にクローンボタンをクリックすると、同じ id id =clonedInput1を使用して同じ div がクローンされ、その後インクリメントが開始されます。

ここで動作するバージョンを見つけることができますhttp://jsfiddle.net/shalucosmic/FEpMk/7/

  <script type="text/javascript">
  $(document).ready(function(){
        //jQuery(this).parent(".clonedInput")
           var regex = /^(.*)(\d)+$/i;
           var cloneIndex = $(".clonedInput").length;

           $("button.clone").live("click", function(){

           $(this).parents(".clonedInput").clone().appendTo("body").attr("id",  "clonedInput" +  cloneIndex)
           .find("*").each(function() {
            var id = this.id || "";
            var name = this.name || "";

            var match = id.match(regex) || [];

           var matchname = name.match(regex) || [];
           if (match.length == 3) {
            this.id = match[1] + (cloneIndex);
           }
          if (matchname.length == 3) {
            this.name = match[1] + (cloneIndex);
          }
 });
cloneIndex++;

});
$("button.remove").live("click", function(){
   $(this).parents(".clonedInput").remove();
});

});

  <div id="clonedInput1" class="clonedInput">
   <input type="text" name="contributer1" value="" id="contributer1"/>

   <div class="actions">
    <button class="clone">Clone</button> 
    <button class="remove">Remove</button>
   </div>
 </div>
4

3 に答える 3

2

次のように簡略化できます

$(document).ready(function() {
    // jQuery(this).parent(".clonedInput")
    var regex = /^(.*)(\d)+$/i;
    var cloneIndex = $(".clonedInput").length + 1;

    $(document).on("click", 'button.clone', function() {
        $(this).closest(".clonedInput").clone().appendTo("body").attr("id",
                "clonedInput" + cloneIndex).find("[id], [name]").each(
                function() {
                    this.id = this.id.replace(/\d+$/, cloneIndex);
                    this.name = this.name.replace(/\d+$/, cloneIndex);
                });
        cloneIndex++;
    });

    $("button.remove").live("click", function() {
                $(this).parents(".clonedInput").remove();
            });

});

デモ:フィドル

于 2013-03-22T09:56:48.457 に答える
1

宣言cloneIndexする際には、以下のように宣言する必要があります。

var cloneIndex = $(".clonedInput").length+1;

デモ

于 2013-03-22T09:47:01.310 に答える
1

複製された入力の長さに 1 を追加する必要があります

var cloneIndex = $(".clonedInput").length + 1;
                                    // -----^^^^ here

ここでフィドル

于 2013-03-22T09:41:41.097 に答える