[英]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'> 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'> 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.