【发布时间】:2016-07-20 06:35:26
【问题描述】:
我有两个 Kendo TimePicker:from 和 to
我试图实现的是使用 JavaScript 来更改这些 TimePickers 的下拉列表选项的范围。两个 TimePickers 的间隔都是 30 分钟,从 00:00 到 23:30。
例如,如果选择from 到 14:30,则打开to 时的选项将至少为 14:30。同样,如果选择to到20:00,那么from的最大选项是20:00
我已经编写了我的代码,一切似乎都还好除了当from 和to 都选择最后一个选项(23:30)时,预期的行为是to 的选项是只有 23:30 本身。然而,实际上to 的选项是所有时间跨度,间隔为 30 分钟,从 23:30 开始,到 23:00(即 23:30、00:00、00:30、... 23: 00)
我尝试了许多其他“组合”,包括都设置为 00:00,都显示正确的行为,除了这种情况。我想知道这是否是 Telerik 控件的已知错误,还是我的代码有什么问题?如何实现预期的行为?
var $start = $startSel.data("kendoDateTimePicker");
var $end = $endSel.data("kendoDateTimePicker");
var start = $startSel.val() == "" ? null : $start.value();
var end = $endSel.val() == "" ? null : $end.value();
if (start != null) {
$end.min(comLib.ceilTo30Minute(start));
} else {
$end.min(new Date(1900, 0, 1));
$end.max(new Date(2099, 11, 31));
}
if (end != null) {
$start.max(comLib.floorTo30Minute(end));
} else {
$start.min(new Date(1900, 0, 1));
$start.max(new Date(2099, 11, 31));
}
///////////////////// in comLib
function ceilTo30Minute (dateTime) {
if (dateTime == null)
return null;
var min = dateTime.getMinutes() % 30;
if (min != 0)
{
dateTime = publicAccess.addTime(dateTime, 0, -min);
dateTime = publicAccess.addTime(dateTime, 0, 30);
}
return dateTime;
};
function floorTo30Minute(dateTime) {
if (dateTime == null)
return null;
var min = dateTime.getMinutes() % 30;
if (min != 0) {
dateTime = publicAccess.addTime(dateTime, 0, -min);
}
return dateTime;
};
【问题讨论】:
标签: javascript kendo-ui telerik kendo-asp.net-mvc