Javascript时间选择器范围更新

时间:2018-08-31 09:00:54

标签: javascript datepicker timepicker

我正在使用此时间选择器http://jonthornton.github.io/jquery-timepicker/

当用户第一次从 datepicker 中选择日期时,我会从服务器获取数据并将其以正确的格式放入数组中。我在 disableTimeRanges 中的 timepicker 中使用了此数组。当用户第一次单击时有效,但是当用户第二次更改日期然后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 :(得分:0)

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

  }
});