如何在剑道日期选择器中禁用过去的日期?

goo*_*yui 1 asp.net-mvc asp.net-mvc-4 kendo-ui kendo-asp.net-mvc

如何在Kendo日期选择器中禁用过去的日期?(日期选择器验证)

这将允许用户仅选择当前日期和将来的日期。

In the HTML :
@Html.EditorFor(Model => Model.AppointmentDate)

In the JQuery :
$('#AppointmentDatee').data('kendoDatePicker')
Run Code Online (Sandbox Code Playgroud)

Tet*_*oto 5

禁用过去日期的最短方法是使用min具有当前日期值的参数:

var presentDate = new Date();

$(function () {
    var datepicker = $('#AppointmentDate').kendoDatePicker({
        value: presentDate,
        min: presentDate,
    }).data('kendoDatePicker');
});
Run Code Online (Sandbox Code Playgroud)

如果您将Razor与@Html.Kendo()助手一起使用,请使用以下DatePickerBuilderBase.Min()方法:

@(Html.Kendo().DatePicker().Name("AppointmentDate").Min(DateTime.Today))
Run Code Online (Sandbox Code Playgroud)

但是,该min参数将删除所有禁用的过去日期(即它们不会显示在日历视图中)。如果要显示禁用日期,但用户无法与它们交互(通过单击日期),请在参数k-state-disabled中的empty选项中使用CSS类month:

var datepicker = $('#AppointmentDate2').kendoDatePicker({
        value: presentDate,
    min: presentDate,
    month: {
        empty: '<div class="k-state-disabled">#= data.value #</div>'
    }
}).data('kendoDatePicker');
Run Code Online (Sandbox Code Playgroud)

如果使用@(Html.Kendo())helper,请使用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>
Run Code Online (Sandbox Code Playgroud)

助手用法:

@(Html.Kendo().DatePicker().Name("AppointmentDate").DisableDates("disablePastDates"))
Run Code Online (Sandbox Code Playgroud)

工作示例:

JSFiddle演示1(隐藏过去的日期)

JSFiddle演示2(过去日期为灰色)

参考文献:

Kendo.Mvc.UI.Fluent.DatePickerBuilderBase.Min(DateTime)

将超出日期显示为禁用

Kendo MVC DatePicker-禁用日期

相似的问题(使用不同的方法):

如何禁用过去的日期而不将其隐藏在剑道日期选择器中?