如何重新初始化或重置 Jonthornton 的 jQuery 时间选择器?

How to reinitialize or reset Jonthornton's jQuery timepicker?

我在我的应用程序中使用这个plugin

我有两个文本框,id="order_at" 用于日期选择器,id="order_time" 用于时间选择器。

<input type="text" name="order_at" id="order_at" readonly="" value=""/>
<input type="text" name="order_time" id="order_time" value=""/>

对于日期选择器,我将文本框 (order_at) 的值设置为当前日期(因为我阻止了过去的日期)。

var lastDate = new Date();
lastDate.setDate(lastDate.getDate());
$('#order_at').datepicker({ 
       format: "yyyy-mm-dd",
       autoclose: true,
       minDate: 0,
       startDate: '-0m'
});
$("#order_at").datepicker('setDate', lastDate);

因为我在初始化日期选择器时将它的值设置为当前日期,所以我想屏蔽当前日期的过去几个小时。例如,如果现在是 14:00,那么时间选择器将列出从 14:00 开始的小时数。

var d = new Date();  
var chDate = d.getDate();
var chMonth = d.getMonth();
var chYear = d.getFullYear();
var hour = d.getHours();  
var min = d.getMinutes(); 

if(chDate < 10)
  chDate = '0' + chDate;
if(parseInt(chMonth + 1) < 10)
  chMonth = '0' + parseInt(chMonth + 1);
var currentDate = chYear + '-' + chMonth + '-' + chDate;

var modhr = (hour + 1);
if(min < 10)
  var output = modhr + ':0' + min;
else 
  var output = modhr + ':' + min;

$("#order_time").val(output); 
$('#order_time').timepicker({
     'timeFormat': 'H:i',
     'maxTime': '23:00',
     'minTime': output
});

现在我关心的是查看用户是否选择了未来的日期。在那种情况下,我需要将时间选择器的 minTime 重置为一天的开始时间,比如 06:00.

这是处理该因素的代码:

$('#order_at').on('change',function(){
  if($(this).val() == currentDate)
  {
      $("#order_time").val(output);
      $('#order_time').timepicker(); 
      $('#order_time').timepicker({
         'timeFormat': 'H:i',
         'maxTime': '23:00',
         'minTime': output
      });
  }
  else
  {
     $('#order_time').timepicker();
     $('#order_time').timepicker({
        'timeFormat': 'H:i',
        'maxTime': '23:00',
        'minTime': '06:00'
     });
  }
});

但是,当 oder_at 文本框值发生变化时,小时列表不会更新。它始终显示从 06:00.

开始的列表

我该如何解决这个问题?

经过一些研究,我找到了文档中没有提到的解决方案。

这是初始化时间选择器的方式:

$('#order_time').timepicker({
     'timeFormat': 'H:i',
     'maxTime': '23:00',
     'minTime': output,
     'step' : 20
  });

现在要重新初始化一个特定的选项,可以这样做:-

$('#id_of_object').timepicker('option', { '<the option>: '<The value you want to put>' });

因此,就我而言,脚本将是:-

$('#order_at').on('change',function(){
   if($(this).val() == currentDate)
   {
      $('#order_time').timepicker('option', { minTime: output });
   }
   else
   {
      $('#order_time').timepicker('option', { minTime: '06:00' });
   }
});