简体   繁体   English

Datepicker 在创建时不起作用,它动态使用 javascript

[英]Datepicker is not working when created it dynamically use javascript

I'm making a page, where one of the forms uses a datepicker and I make it dynamically.我正在制作一个页面,其中一个表单使用日期选择器,我动态制作。 The first form works fine but when adding a new form the datepicker does not display anything.第一个表单工作正常,但在添加新表单时,日期选择器不显示任何内容。 Here is my code with an application screenshot这是我的带有应用程序屏幕截图的代码

Here is the javascript code, I place it in Header这是 javascript 代码,我把它放在 Header 中

    var room2 = 1;
    function tambah_kegiatan() {
        room2++;
        var objTo = document.getElementById('tambah_kegiatan');
        var datepicker = document.getElementById('reservation2');
        var divtest = document.createElement("div");
        divtest.setAttribute("class", "form-group removeclass"+room2);
        var rdiv = 'removeclass'+room2;
        divtest.innerHTML = '<div class="card-body"><div class="row"><div class="col-md-12"><div class="form-group "><label for="inputEstimatedBudget">Nama Agenda</label><input type="text" class="form-control" name="namaAgenda[]" placeholder="Nama Agenda" required></div></div><div class="col-md-6"><div class="form-group "><label for="inputEstimatedBudget">Tipe Kegiatan</label><select class="form-control select2bs4" style="width: 100%;" name="tipeKegiatan[]"> @foreach($agenda_kegiatan as $agenda_kegiatan2) <option value={{ $agenda_kegiatan2->id_agenda_kegiatan }}>{{ $agenda_kegiatan2->nama_kegiatan }} </option> @endforeach </select></div></div><div class="col-md-6"><div class="form-group "><label for="inputEstimatedBudget">Kode Kegiatan</label><input type="text" class="form-control" name="kodeKegiatan[]" placeholder="Kode Kegiatan" required></div></div><div class="col-md-6"><div class="form-group"><label for="inputDescription">Waktu Penelitian</label><div class="input-group"><div class="input-group-prepend"><span class="input-group-text"><i class="far fa-calendar-alt"></i></span></div><input type="text" class="form-control float-right" id="reservation2" name="reservation2[]"></div></div></div><div class="form-group "><label class="form-control-label text-muted" style="opacity: 0;">Tambah</label><div class="input-group-btn"><button class="btn btn-success" type="button"  onclick="tambah_kegiatan();"> <span class="glyphicon glyphicon-plus" aria-hidden="true"> + </span> </button></div></div><div class="form-group"><label class="form-control-label text-muted" style="opacity: 0;">Kurang</label><div class="input-group-btn"><button class="btn btn-danger" type="button" onclick="remove_tambah_kegiatan('+room2+');"><span class="glyphicon glyphicon-plus" aria-hidden="true"> - </span></button></div></div></div></div>';

        objTo.appendChild(divtest);
    }
    function remove_tambah_kegiatan(rid) {
        $('.removeclass'+rid).remove();
    }

Here is the php code这是php代码

       <div class="col-md-12">
          <div class="card card-secondary">
              <div class="card-header">
                  <h3 class="card-title">Agenda Penelitian</h3>

                  <div class="card-tools">
                  <button type="button" class="btn btn-tool" data-card-widget="collapse" data-toggle="tooltip" title="Collapse">
                      <i class="fas fa-minus"></i></button>
                  </div>
              </div>
              <div class="card-body">
                  <div class="row">
                      <div class="col-md-12">
                          <div class="form-group ">
                              <label for="inputEstimatedBudget">Nama Agenda</label>
                              <input type="text" class="form-control" name="namaAgenda[]" placeholder="Nama Agenda" required>
                          </div>
                      </div>
                      <div class="col-md-6">
                          <div class="form-group ">
                              <label for="inputEstimatedBudget">Tipe Kegiatan</label>
                              <select class="form-control select2bs4" style="width: 100%;" name="tipeKegiatan[]">
                                  @foreach($agenda_kegiatan as $agenda_kegiatan)
                                      <option value={{ $agenda_kegiatan->id_agenda_kegiatan }}>{{ $agenda_kegiatan->nama_kegiatan }} </option>
                                  @endforeach
                              </select>
                          </div>
                      </div>
                      <div class="col-md-6">
                          <div class="form-group ">
                              <label for="inputEstimatedBudget">Kode Kegiatan</label>
                              <input type="text" class="form-control" name="kodeKegiatan[]" placeholder="Kode Kegiatan" required>
                          </div>
                      </div>
                      <div class="col-md-6">
                        <div class="form-group">
                          <label for="inputDescription">Waktu Penelitian</label>
                          <div class="input-group">
                            <div class="input-group-prepend">
                              <span class="input-group-text">
                              <i class="far fa-calendar-alt"></i>
                              </span>
                            </div>
                            <input type="text" class="form-control float-right" id="reservation2" name="reservation2[]">
                          </div>
                        </div>
                      </div>
                      <div class="form-group ">
                          <label class="form-control-label text-muted" style="opacity: 0;">Tambah</label>
                          <div class="input-group-btn">
                              <button class="btn btn-success" type="button"  onclick="tambah_kegiatan();"> 
                                  <span class="glyphicon glyphicon-plus" aria-hidden="true"> + </span> 
                              </button>
                          </div>
                      </div>
                      <!-- <div class="form-group">
                          <label class="form-control-label text-muted" style="opacity: 0;">Kurang</label>
                          <div class="input-group-btn">
                              <button class="btn btn-danger" type="button" onclick="remove_tambah_kegiatan('+room2+');">
                                  <span class="glyphicon glyphicon-plus" aria-hidden="true"> - </span>
                              </button>
                          </div>
                      </div> -->
                  </div>
              </div>

              <div id="tambah_kegiatan">

            </div>
          </div>
      </div>

Here is the Datepicker code, I place it in the Footer这是日期选择器代码,我把它放在页脚中

<script>
var startDate;
var endDate;

$(function () {
    //Initialize Select2 Elements
    $('.select2').select2()

    //Initialize Select2 Elements
    $('.select2bs4').select2({
    theme: 'bootstrap4'
    })

    //Datemask dd/mm/yyyy
    $('#datemask').inputmask('dd/mm/yyyy', { 'placeholder': 'dd/mm/yyyy' })
    //Datemask2 mm/dd/yyyy
    $('#datemask2').inputmask('mm/dd/yyyy', { 'placeholder': 'mm/dd/yyyy' })
    //Money Euro
    $('[data-mask]').inputmask()

    //Date range picker
    $('#reservation').daterangepicker()
    //Date range picker
    $('#reservation2').daterangepicker()
    //Date range picker with time picker
    $('#reservationtime').daterangepicker({
    timePicker: true,
    timePickerIncrement: 30,
    locale: {
        format: 'MM/DD/YYYY hh:mm A'
    }
    })
    //Date range as a button
    $('#daterange-btn').daterangepicker(
    {
        ranges   : {
        'Today'       : [moment(), moment()],
        'Yesterday'   : [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
        'Last 7 Days' : [moment().subtract(6, 'days'), moment()],
        'Last 30 Days': [moment().subtract(29, 'days'), moment()],
        'This Month'  : [moment().startOf('month'), moment().endOf('month')],
        'Last Month'  : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
        },
        startDate: moment().subtract(29, 'days'),
        endDate  : moment()
    },
    function (start, end) {
        $('#reportrange span').html(start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
        startDate = start;
        endDate = end; 
    }
    )
    $('#submitBtn').click(function(){
      console.log(startDate.format('D MMMM YYYY') + ' - ' + endDate.format('D MMMM YYYY'));
    });
    //Timepicker
    $('#timepicker').datetimepicker({
    format: 'LT'
    })

    //Bootstrap Duallistbox
    $('.duallistbox').bootstrapDualListbox()

    //Colorpicker
    $('.my-colorpicker1').colorpicker()
    //color picker with addon
    $('.my-colorpicker2').colorpicker()

    $('.my-colorpicker2').on('colorpickerChange', function(event) {
    $('.my-colorpicker2 .fa-square').css('color', event.color.toString());
    });

    $("input[data-bootstrap-switch]").each(function(){
    $(this).bootstrapSwitch('state', $(this).prop('checked'));
    });
})

Here is the screenshot first form work properly这是屏幕截图第一个表单正常工作第一种形式正常工作 Here is the screenshot second form doesnt work properly这是屏幕截图第二种形式无法正常工作第二种形式不能正常工作 Can you guys give me some suggestion how to solve the problem?你们能给我一些建议如何解决这个问题吗?

It may be because you are creating datepicker dynamically after running the JQuery code for initialization.这可能是因为您在运行 JQuery 代码进行初始化后动态创建日期选择器。 You can put the code for init datepicker into a javascript function and call it on-load and after dynamically creating date picker您可以将 init datepicker 的代码放入一个 javascript 函数中,并在加载时和动态创建日期选择器后调用它

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM