簡體   English   中英

jQuery clone()無法按預期工作

[英]jQuery clone() is not working as expected

我有以下html select元素:

<div class="addmore_box_date">
    <div class="row">

        <div class="col-xs-6 col-sm-4 col-md-4">            
               <input type='text' name="add_date[]" class="form-control" id="add_date" placeholder="Select date">
          </div>

          <div class="col-xs-6 col-sm-4 col-md-4">
            <select class="form-control add_time" id="add_time" name="add_time[]">
                <option value="">Select time</option>
                <option value="12:00 Am">12:00 Am</option>
                <option value="1:00 Am">1:00 Am</option>
                <option value="2:00 Am">2:00 Am</option>
                <option value="3:00 Am">3:00 Am</option>
                <option value="4:00 Am">4:00 Am</option>
                <option value="5:00 Am">5:00 Am</option>
                <option value="6:00 Am">6:00 Am</option>
                <option value="7:00 Am">7:00 Am</option>
                <option value="8:00 Am">8:00 Am</option>
                <option value="9:00 Am">9:00 Am</option>
                <option value="10:00 Am">10:00 Am</option>
                <option value="11:00 Am">11:00 Am</option>
                <option value="12:00 Pm">12:00 Pm</option>
                <option value="1:00 Pm">1:00 Pm</option>
                <option value="2:00 Pm">2:00 Pm</option>
                <option value="3:00 Pm">3:00 Pm</option>
                <option value="4:00 Pm">4:00 Pm</option>
                <option value="5:00 Pm">5:00 Pm</option>
                <option value="6:00 Pm">6:00 Pm</option>
                <option value="7:00 Pm">7:00 Pm</option>
                <option value="8:00 Pm">8:00 Pm</option>
                <option value="9:00 Pm">9:00 Pm</option>
                <option value="10:00 Pm">10:00 Pm</option>
                <option value="11:00 Pm">11:00 Pm</option>
            </select>                                  
        </div>                      
    </div>                                      
    <br/>
</div>                                      
<label for=""><a id="addmoredate">Add more date & time</a></label>

有鏈接使用此id addmoredate添加更多日期和時間

因此,為此,我使用下面的JQuery代碼,但是第一次添加一個select元素。 不錯,但是第二次添加更多元素時,它添加了3個select元素,但應該將它們乘以1。

var max_fields      = 30; //maximum input boxes allowed
var wrapper         = $(".addmore_box_date"); //Fields wrapper
var add_button      = $("#addmoredate"); //Add button ID

$('#add_date').datetimepicker({     
    timepicker:false,
    format:'Y-m-d',
    formatDate:'Y/m/d',
    minDate:'-1970/01/02', // yesterday is minimum date
    maxDate:'+2017/12/01', // and tommorow is maximum date calendar     

});    

var x = 1; //initlal text box count    
$(add_button).click(function(e){ //on add input button click
   e.preventDefault();

   if(x < max_fields){ //max input box allowed           
       x++; //text box increment


       $(wrapper).append("<span id='date_time_close'><div class='row'><div class='col-xs-6 col-sm-4 col-md-4'><input type='text' name='add_date[]' class='form-control' id='add_date"+x+"' placeholder='Select date'></div><div class='col-xs-6 col-sm-4 col-md-4'><div class='new_select'></div></div><a class='remove_date_time pull-right'>&nbsp;Close</a></div></span>");   

       if(x == 2) {
        var y = x+1;
        $('select.add_time').clone().attr('class', 'add_time'+y).appendTo('.new_select');
       } else {             
        alert(x);
        $('select.add_time'+x).clone().attr('class', 'add_time'+x).appendTo('.new_select');
       }


     $('#add_date'+x).datetimepicker({      
        timepicker:false,
        format:'Y-m-d',
        formatDate:'Y/m/d',
        minDate:'-1970/01/02', // yesterday is minimum date
        maxDate:'+2017/12/01', // and tommorow is maximum date calendar                 
    });     

   }
});

第一次顯示是這樣的:

在此處輸入圖片說明

但是第二次它添加了更多的select元素,而不是1

在此處輸入圖片說明

因為每次您都基於在每一行上克隆的類將其追加到該元素之后,它也會在其他行上找到該元素並將其添加到該行中

.appendTo('.new_select');

嘗試這個

$(add_button).click(function(e){ //on add input button click
   e.preventDefault();

   if(x < max_fields){ //max input box allowed           
       x++; //text box increment

       var newRow = $("<span id='date_time_close'><div class='row'><div class='col-xs-6 col-sm-4 col-md-4'><input type='text' name='add_date[]' class='form-control' id='add_date"+x+"' placeholder='Select date'></div><div class='col-xs-6 col-sm-4 col-md-4'><div class='new_select'></div></div><a class='remove_date_time pull-right'>&nbsp;Close</a></div></span>");

       /* if(x == 2) {
          var y = x+1;
          newRow.find('.new_select').append($('select.add_time').clone().attr('class', 'add_time'+y));
       } else {             
           //alert(x);
           newRow.find('.new_select').append($('select.add_time'+x).clone().attr('class', 'add_time'+x));

       }*/

      newRow.find('.new_select').append($('select.add_time').clone().attr('class', 'add_time'+x));
      $(wrapper).append(newRow);  

   }
});

小提琴的例子

<script>
$(document).on("click", "#addmoredate", function(){
   add_more($(".row:last"));
});
function add_more(evt)
{
    var curr = evt;
    var item = $(curr).clone(true);
    $(curr).parent().append("<br/>").append(item).show();
}
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM