Javascript时间选择器范围更新

Javascript时间选择器范围更新,javascript,datepicker,timepicker,Javascript,Datepicker,Timepicker,我在用这个计时器 当用户第一次选择date fromdatepicker时,我从服务器获取数据,并将它们以正确的格式放入数组中。此数组用于禁用时间范围中的时间选择器。当用户第一次单击时,这种方法有效,但当用户第二次更改日期时,disableTimeRanges将不会更新,所以它与第一次相同 当用户点击日期选择器时,有没有办法“重置”时间选择器 下面是一个代码: $("#datefrom").datepicker({ dateFormat: 'dd-mm-yy', onSelect

我在用这个计时器

当用户第一次选择date fromdatepicker时,我从服务器获取数据,并将它们以正确的格式放入数组中。此数组用于禁用时间范围中的时间选择器。当用户第一次单击时,这种方法有效,但当用户第二次更改日期时,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
        });
  });

  }
});

为什么数组在$.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
        });
  });

  }
});

这是一样的。@user3590094尝试使用异步并等待。我更新答案。