0

我有當前的代碼,這是引導datetimepicker Bootstrap 3 Datepicker,我目前的問題是,當我點擊「添加更多字段」與文本字段與新datetimerpicker不工作,對它可能是什麼想法?Bootstrap Datetimepicker不能使用動態字段

<script type="text/javascript"> 
    $(document).ready(function() { 
     var max_fields  = 5; //maximum input boxes allowed 
     var wrapper   = $(".input_fields_wrap"); //Fields wrapper 
     var add_button  = $(".add_field_button"); //Add button ID 

     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('<div>\ 
        <div class="input-group date datepicker_init">\ 
         <input class="form-control" type="text" name="mytext[]">\ 
         <span class="input-group-addon">\ 
          <span class="glyphicon glyphicon-calendar"></span>\ 
         </span>\ 
        </div>\ 
        <div class="input-group date datepicker_end">\ 
         <input class="form-control" type="text" name="mytext[]">\ 
         <span class="input-group-addon">\ 
          <span class="glyphicon glyphicon-calendar"></span>\ 
         </span>\ 
        </div>\ 
        <a href="#" class="remove_field red-color">Remove</a>\ 
       <div class="voffset10"></div>\ 
       </div>\ 
       '); 
      } 
     }); 

     $(wrapper).on("click",".remove_field", function(e){ //user click on remove text 
      e.preventDefault(); $(this).parent('div').remove(); x--; 
     }) 

$('.datepicker_init').datetimepicker({ 
    locale: 'es', 
    format: 'YYYY-MM-DD HH:mm' 
}); 

$('.datepicker_end').datetimepicker({ 
    locale: 'es', 
    format: 'YYYY-MM-DD HH:mm', 
    useCurrent: false 
}); 

$(".datepicker_init").on("dp.change", function (e) { 
    $('.datepicker_end').data("DateTimePicker").minDate(e.date); 
}); 

$(".datepicker_end").on("dp.change", function (e) { 
    $('.datepicker_init').data("DateTimePicker").maxDate(e.date); 
}); 
}); 
</script> 

<div class="form-group"> 
    <div class="input_fields_wrap"> 
     <button class="add_field_button btn btn-info btn-block voffset10">Add More Fields</button> 
     <div> 
      <div class='input-group date datepicker_init'> 
       <input class="form-control" type="text" name="mytext[]"> 
       <span class="input-group-addon"> 
        <span class="glyphicon glyphicon-calendar"></span> 
       </span> 
      </div> 
      <div class='input-group date datepicker_end'> 
       <input class="form-control" type="text" name="mytext[]"> 
       <span class="input-group-addon"> 
        <span class="glyphicon glyphicon-calendar"></span> 
       </span> 
      </div> 
     </div> 
     <div class="voffset10"> 
    </div> 
</div> 

更新部分

$(".datepicker_init").on("dp.change", function (e) { 
     $('.datepicker_end').data("DateTimePicker").minDate(e.date); 
    }); 

    $(".datepicker_end").on("dp.change", function (e) { 
     $('.datepicker_init').data("DateTimePicker").maxDate(e.date); 
    }); 
+0

不知道這是否有助於... [鏈接](http://stackoverflow.com/questions/22164812/bootstrap-datetime-picker-plugin-on-dynamic-added-element) – Leonz

回答

1

呼的一下處理程序中的日期選擇器的init腳本,新的HTML被追加之後,像這樣:

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

    // max input box allowed 
    // Reduce nesting! 
    if(x >= max_fields){ 
     return 
    } 

    //text box increment 
    x++; 
    var tmp = $(wrapper).append('<div>\ 
     <div class="input-group date datepicker_init">\ 
      <input class="form-control" type="text" name="mytext[]">\ 
      <span class="input-group-addon">\ 
       <span class="glyphicon glyphicon-calendar"></span>\ 
      </span>\ 
     </div>\ 
     <div class="input-group date datepicker_end">\ 
      <input class="form-control" type="text" name="mytext[]">\ 
      <span class="input-group-addon">\ 
       <span class="glyphicon glyphicon-calendar"></span>\ 
      </span>\ 
     </div>\ 
     <a href="#" class="remove_field red-color">Remove</a>\ 
    <div class="voffset10"></div>\ 
    </div>'); 

    // Init the new pickers 
    $('.datepicker_init', tmp).datetimepicker({ 
     locale: 'es', 
     format: 'YYYY-MM-DD HH:mm' 
    }); 

    $('.datepicker_end', tmp).datetimepicker({ 
     locale: 'es', 
     format: 'YYYY-MM-DD HH:mm', 
     useCurrent: false 
    }); 
}); 
+0

哦花花公子你是一個專業人士!非常感謝你的幫助!! –

+1

歡迎您,很高興幫助 – xxxmatko

+0

是您可以用其他方式幫助我的任何方式,所以我現在遇到的問題是,當我添加一個新的動態字段時,我如何驗證第二個字段日期在所選日期後開始第一個@xxxmatko –

2

首先,你的DateTimePicker當$(document).ready發生不在動態div創建時間時發生在div上的綁定,因爲add_button單擊事件創建您的動態div,這次不綁定datetimepicker。因此,在創建動態div後,您必須同時爲此div綁定datetimepicker。下面的變化可以幫助你understand-

將你的下面的代碼的任何功能,在這兩個時間,即在時間的document.ready和DIV創建時間

function yourfunction(){ 
     $('.datepicker_init').datetimepicker({ 
      locale: 'es', 
      format: 'YYYY-MM-DD HH:mm' 
     }); 
     $('.datepicker_end').datetimepicker({ 
      locale: 'es', 
      format: 'YYYY-MM-DD HH:mm', 
      useCurrent: false 
     }); 
    } 

所以最後你的腳本看起來像調用這個函數這

$(document).ready(function() { 
     var max_fields  = 5; //maximum input boxes allowed 
     var wrapper   = $(".input_fields_wrap"); //Fields wrapper 
     var add_button  = $(".add_field_button"); //Add button ID 

     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('<div>\ 
        <div class="input-group date datepicker_init">\ 
         <input class="form-control" type="text" name="mytext[]">\ 
         <span class="input-group-addon">\ 
          <span class="glyphicon glyphicon-calendar"></span>\ 
         </span>\ 
        </div>\ 
        <div class="input-group date datepicker_end">\ 
         <input class="form-control" type="text" name="mytext[]">\ 
         <span class="input-group-addon">\ 
          <span class="glyphicon glyphicon-calendar"></span>\ 
         </span>\ 
        </div>\ 
        <a href="#" class="remove_field red-color">Remove</a>\ 
       <div class="voffset10"></div>\ 
       </div>\ 
       '); 
      } 
      yourfunction(); 
     }); 

     $(wrapper).on("click",".remove_field", function(e){ //user click on remove text 
      e.preventDefault(); $(this).parent('div').remove(); x--; 
     }) 

     yourfunction(); 

     $(".datepicker_init").on("dp.change", function (e) { 
      $('.datepicker_end').data("DateTimePicker").minDate(e.date); 
     }); 

     $(".datepicker_end").on("dp.change", function (e) { 
      $('.datepicker_init').data("DateTimePicker").maxDate(e.date); 
     }); 
    });