如何禁用 Kendo 日期选择器中的过去日期?
How to disable the past dates in the Kendo date picker?
如何在 Kendo 日期选择器中禁用过去的日期? (日期选择器验证)
这将允许用户 select 仅当前日期和未来日期。
In the HTML :
@Html.EditorFor(Model => Model.AppointmentDate)
In the JQuery :
$('#AppointmentDatee').data('kendoDatePicker')
禁用过去日期的最短方法是使用具有当前日期值的 min
参数:
var presentDate = new Date();
$(function () {
var datepicker = $('#AppointmentDate').kendoDatePicker({
value: presentDate,
min: presentDate,
}).data('kendoDatePicker');
});
如果您将 Razor 与 @Html.Kendo()
助手一起使用,请使用 DatePickerBuilderBase.Min()
方法:
@(Html.Kendo().DatePicker().Name("AppointmentDate").Min(DateTime.Today))
但是,min
参数将删除所有禁用的过去日期(即它们不显示在日历视图中)。如果您想显示禁用的日期但用户无法与它们交互(通过单击日期),请在 month
内的 empty
选项中使用 k-state-disabled
CSS class参数:
var datepicker = $('#AppointmentDate2').kendoDatePicker({
value: presentDate,
min: presentDate,
month: {
empty: '<div class="k-state-disabled">#= data.value #</div>'
}
}).data('kendoDatePicker');
如果使用 @(Html.Kendo())
助手,请使用 DisabledDates
调用一个禁用过去日期的函数,如下例所示:
<script>
var getPastDates = function(begin, end) {
for (var dtarr = [], date = start; date < end; date.setDate(date.getDate() + 1)) {
dtarr.push(new Date(dt));
}
return dtarr;
}
function disablePastDates(date) {
var pastDate = getPastDates(new Date('0001-01-01T00:00:00Z'), new Date());
if (date && compareDates(date, dates)) {
return true;
}
else {
return false;
}
}
function compareDates(date, dates) {
for (var i = 0; i < dates.length; i++) {
if (dates[i].getDate() == date.getDate() &&
dates[i].getMonth() == date.getMonth() &&
dates[i].getYear() == date.getYear()) {
return true;
}
}
}
</script>
助手用法:
@(Html.Kendo().DatePicker().Name("AppointmentDate").DisableDates("disablePastDates"))
工作示例:
JSFiddle demo 1 (hidden past dates)
JSFiddle demo 2 (grayed-out past dates)
参考文献:
Kendo.Mvc.UI.Fluent.DatePickerBuilderBase.Min(DateTime)
Show Out-of-Range Dates as Disabled
Kendo MVC DatePicker - Disable dates
类似问题(采用不同方法):
How to disable past dates without hiding them in Kendo date picker?
如果您使用 jquery 作为您的 kendoDatePicker ,此代码可能会对您有所帮助!
$("#MyDatapickerElement").kendoDatePicker({
value: new Date(),
disableDates: function (date) {
if (date <= new Date()) {
return true;
} else {
return false;
}
}
});
如果使用 Html.Kendo().DatePicker(),您可以使用 MonthTemplate 显示禁用的日期。下面的示例显示最小日期设置为 DateTime.Today 并将 MonthTemplate 设置为禁用显示过去的日期。
Html.Kendo().DatePicker()
.Name("MyDate")
.Min(DateTime.Today)
.MonthTemplate(m=>m
.Empty("<div class=\"k-state-disabled\">#= data.value #</div>")
)
如何在 Kendo 日期选择器中禁用过去的日期? (日期选择器验证)
这将允许用户 select 仅当前日期和未来日期。
In the HTML :
@Html.EditorFor(Model => Model.AppointmentDate)
In the JQuery :
$('#AppointmentDatee').data('kendoDatePicker')
禁用过去日期的最短方法是使用具有当前日期值的 min
参数:
var presentDate = new Date();
$(function () {
var datepicker = $('#AppointmentDate').kendoDatePicker({
value: presentDate,
min: presentDate,
}).data('kendoDatePicker');
});
如果您将 Razor 与 @Html.Kendo()
助手一起使用,请使用 DatePickerBuilderBase.Min()
方法:
@(Html.Kendo().DatePicker().Name("AppointmentDate").Min(DateTime.Today))
但是,min
参数将删除所有禁用的过去日期(即它们不显示在日历视图中)。如果您想显示禁用的日期但用户无法与它们交互(通过单击日期),请在 month
内的 empty
选项中使用 k-state-disabled
CSS class参数:
var datepicker = $('#AppointmentDate2').kendoDatePicker({
value: presentDate,
min: presentDate,
month: {
empty: '<div class="k-state-disabled">#= data.value #</div>'
}
}).data('kendoDatePicker');
如果使用 @(Html.Kendo())
助手,请使用 DisabledDates
调用一个禁用过去日期的函数,如下例所示:
<script>
var getPastDates = function(begin, end) {
for (var dtarr = [], date = start; date < end; date.setDate(date.getDate() + 1)) {
dtarr.push(new Date(dt));
}
return dtarr;
}
function disablePastDates(date) {
var pastDate = getPastDates(new Date('0001-01-01T00:00:00Z'), new Date());
if (date && compareDates(date, dates)) {
return true;
}
else {
return false;
}
}
function compareDates(date, dates) {
for (var i = 0; i < dates.length; i++) {
if (dates[i].getDate() == date.getDate() &&
dates[i].getMonth() == date.getMonth() &&
dates[i].getYear() == date.getYear()) {
return true;
}
}
}
</script>
助手用法:
@(Html.Kendo().DatePicker().Name("AppointmentDate").DisableDates("disablePastDates"))
工作示例:
JSFiddle demo 1 (hidden past dates)
JSFiddle demo 2 (grayed-out past dates)
参考文献:
Kendo.Mvc.UI.Fluent.DatePickerBuilderBase.Min(DateTime)
Show Out-of-Range Dates as Disabled
Kendo MVC DatePicker - Disable dates
类似问题(采用不同方法):
How to disable past dates without hiding them in Kendo date picker?
如果您使用 jquery 作为您的 kendoDatePicker ,此代码可能会对您有所帮助!
$("#MyDatapickerElement").kendoDatePicker({
value: new Date(),
disableDates: function (date) {
if (date <= new Date()) {
return true;
} else {
return false;
}
}
});
如果使用 Html.Kendo().DatePicker(),您可以使用 MonthTemplate 显示禁用的日期。下面的示例显示最小日期设置为 DateTime.Today 并将 MonthTemplate 设置为禁用显示过去的日期。
Html.Kendo().DatePicker()
.Name("MyDate")
.Min(DateTime.Today)
.MonthTemplate(m=>m
.Empty("<div class=\"k-state-disabled\">#= data.value #</div>")
)