如何重新初始化或重置 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' });
}
});
我在我的应用程序中使用这个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' });
}
});