Datepicker не работает при его динамическом использовании javascript - PullRequest
0 голосов
/ 09 января 2020

Я создаю страницу, где одна из форм использует средство выбора даты, и я делаю это динамически. Первая форма работает нормально, но при добавлении новой формы средство выбора даты ничего не отображает. Вот мой код со скриншотом приложения

Вот код javascript, я помещаю его в заголовок

    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();
    }

Вот код 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>

Вот код Datepicker, я помещаю его в нижний колонтитул

<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'));
    });
})

Вот скриншот, первая форма работает правильно first form work properly Вот скриншот Вторая форма не работает должным образом second form doesnt work properly Не могли бы вы дать мне несколько советов, как решить проблему?

1 Ответ

1 голос
/ 09 января 2020

Это может быть связано с тем, что вы динамически создаете средство выбора даты после выполнения кода JQuery для инициализации. Вы можете поместить код для инициатора даты в функцию javascript и вызывать ее при загрузке и после динамического создания выбора даты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...