Изменить disabledHours во время текущего дня, когда изменяется другая опция выбора - PullRequest
0 голосов
/ 08 февраля 2019

Задача - форма бронирования ресторана.Время для инвалидов одинаково во всех ресторанах, кроме одного.Все рестораны могут быть выбраны с помощью выбора параметров.Поле выбора уже имеет функцию js, которая называется show для различных функций.

Я создал js, чтобы установить время между 17 и 23, которое будет отключено, если Ресторан был забран заранее.

Однако я не могу перегрузить сборщик при изменении.Я пробовал это с функциями show () и $ ('# Restaurant'). Change (function (). Я понимаю, что не говорю сборщику об изменении значений, но я не уверен, как.

<select name="Restaurant" id="Restaurant" onchange="show()" required data-msg-required="Please choose the restaurant"> 
        <?php  if (empty($_GET['Restaurant'])){echo '<option disabled selected 
    value="">Choose restaurant</option>';}?>
        <?php booking(); ?>
</select>


<script>
$(function () {
  $('#DatumZeit').datetimepicker({
    locale: 'en',
    minDate: moment().add(2, 'hours'),
    disabledHours: disabledtime,
    format: 'DD.MM.YYYY HH:mm',
    showClose: true,
    icons: {
        close: 'OK'
    },
    widgetPositioning: {
        horizontal: 'auto',
        vertical: 'bottom'
     },
   });
});


 function show(){
    if(document.getElementById('Restaurant').value == "Düsseldorf") {
       var currenttime  = moment();
       var timestart = moment().startOf('day').hour(10).add(7, 'hours');
       var timeend = moment().startOf('day').hour(10).add(13, 'hours');
                        console.log(timestart);
                        console.log(timeend);

        if (currenttime.isBetween(timestart, timeend)) {
          console.log('is between');
          var disabledtime= [10,9,8,7,6,5,4,3,2,1,00,24,23,17,18,19,20,21,22];

       } else {
          console.log('is not between');
          var disabledtime= [10,9,8,7,6,5,4,3,2,1,00,24,23];
      }                                       
    };
 }
</script>

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

У меня действительно есть лучшая версия для моих нужд, которая может работать и для других людей.

function show(){
      if(document.getElementById('Restaurant').value == "Düsseldorf") {
        var myDate = new Date();
        var currenttime = moment(myDate); 
      var timestart = moment().startOf('day').hour(17);
        var timeend = moment().startOf('day').hour(23);

        if (currenttime.isBetween(timestart, timeend)) {
            $('#DatumZeit').data("DateTimePicker").date(moment().add(1, 'days')).disabledHours(
               [0,1,2,3,4,5,6,7,8,9,10,23,24]
            ) 
        } 
        else {
            $('#DatumZeit').data("DateTimePicker").date(moment(myDate)).disabledHours(
                [0,1,2,3,4,5,6,7,8,9,10,23,24]
            )
        }
      }   else {
      $('#DatumZeit').data("DateTimePicker").date(moment().add(2, 'hours')).enabledHours(
              [11, 12 ,13 ,14 ,15, 17,16, 18, 19, 20, 21, 22]
        )
      }
    }
0 голосов
/ 11 февраля 2019

Может быть, это может помочь кому-то еще: в основном я использовал $ ('# DatumZeit'). Data ("DateTimePicker"). DisabledHours.

  function show(){
      if(document.getElementById('Restaurant').value == "Düsseldorf") {
        var currenttime  = moment();
        var timestart = moment().startOf('day').hour(10).add(7, 'hours');
        var timeend = moment().startOf('day').hour(10).add(13, 'hours');

        if (currenttime.isBetween(timestart, timeend)) {
          $('#DatumZeit').data("DateTimePicker").disabledHours([
            10,9,8,7,6,5,4,3,2,1,00,24,23,17,18,19,20,21,22
          ]);
            console.log('is between');
          } else {
          $('#DatumZeit').data("DateTimePicker").disabledHours([
            10,9,8,7,6,5,4,3,2,1,00,24,23
          ]);
            console.log('is not between');
        }
      };

       if(document.getElementById('Restaurant').value != "Düsseldorf") {
          $('#DatumZeit').data("DateTimePicker").disabledHours([
            10,9,8,7,6,5,4,3,2,1,00,24,23
          ]);
       }
    }
...