2016-05-23 8 views
1

私はHTMLのselect要素以下のいる期待どおりに動作しません。jQueryのクローンは、()

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

addmoredate

だから、このIDを使用して、より多くの日付と時刻を追加するためのリンクがあり、このために私が使用していますJQueryコードに続いて、最初にselect要素を1つ追加します。それは3の選択要素を追加していますし、私はより多くを追加するとき、それはオーケーが、二回目だが、それはだ、それはそのように示しています。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     
    });  

    } 
}); 

まず時間で1を追加する必要があります。

enter image description here

しかし2回目は、1の代わりにさらに多くの要素を追加しています。

enter image description here

+2

新しいエルを追加しているクリック同じIDを持つement 'date_time_close' - 間違っています! – Justinas

+0

問題は 'date_time_close' idに関するものではないと思います。そのテキストに「データと時刻を追加」が表示されます。このテキストリンクをクリックすると、選択要素が1つ表示され、さらに選択要素が表示されます。 –

+0

@Justinasは、間違ったIDのためだとは言わず、同じIDを持つことはお勧めできません。良い習慣ではありません。 –

答えて

2

あなたはすべての行にクローン化されてしまったクラスに基づいてこの要素に追加されているので、それは同様に他の行にこれを見つけるたびので、そこにそれらを追加するも

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

    } 
}); 
をお試しくださいすべてのオン

Example Fiddle

+0

私は参照してください。私はクラス名を変更しました。あなたは私に実例を教えてもらえますか? –

+0

私はコードを投稿しました。それを試してみてください –

+0

私はこれを試してみましょう。 –

0
<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> 
関連する問題