Обновление диапазона Javascript timepicker - PullRequest
0 голосов
/ 31 августа 2018

Я использую этот таймер http://jonthornton.github.io/jquery-timepicker/

Когда пользователь впервые выбирает дату из datepicker , я получаю данные с сервера и помещаю их в массив в нужном формате. Этот массив я использую для timepicker in disableTimeRanges . Это работает, когда пользователь щелкает первый раз, но когда пользователь изменяет дату во второй раз, то disableTimeRanges не будет обновляться, поэтому он останется таким же, как в первый раз.

Есть ли способ "сбросить" указатель времени, когда пользователь щелкнет на указателе даты?

Вот код:

$("#datefrom").datepicker({
    dateFormat: 'dd-mm-yy',
    onSelect: function (date) {
       $.post("ajax-date-check.php", {'date': date}, function(result){

            var ret = result.replace(/"/g,'');
            var length = ret.length; 
            var string = ret.slice(1, length-1);
            var array = JSON
            .parse('[' + string.replace(/'/g, '"') + ']')
       .reduce((r, s, i) => r.concat([i % 2 ? r.pop().concat(s) : [s]]), 
        []);

        $('.timepicker1').timepicker({
            'timeFormat': 'H:i',
            'minTime': '8:00am',
            'maxTime': '8:00pm',
            'disableTimeRanges': array,
            'show2400': true
        });
  });

  }
});

1 Ответ

0 голосов
/ 31 августа 2018

почему ваш массив объявляется внутри $ .post ()?

попробуйте это

$("#datefrom").datepicker({
    dateFormat: 'dd-mm-yy',
    onSelect: async function (date) {
       var array;
       await $.post("ajax-date-check.php", {'date': date}, function(result){

            var ret = result.replace(/"/g,'');
            var length = ret.length; 
            var string = ret.slice(1, length-1);
            array = JSON
            .parse('[' + string.replace(/'/g, '"') + ']')
       .reduce((r, s, i) => r.concat([i % 2 ? r.pop().concat(s) : [s]]), 
        []);

        $('.timepicker1').timepicker({
            'timeFormat': 'H:i',
            'minTime': '8:00am',
            'maxTime': '8:00pm',
            'disableTimeRanges': array,
            'show2400': true
        });
  });

  }
});
...