5

我有一个剑道日期选择器,其构造如下:

$("#date").kendoDatePicker({
    format: "yyyy-MM-dd",
    footer: " ",
    parseFormats: ["MM/dd/yyyy", "dd/MM/yyyy"]
  });

我想使用剑道验证器来验证日期是否包含格式为 yyyy-MM-dd 的有效日期。我试过这个:

<input type="date" id="date" placeholder="yyyy-mm-dd" name="date" required data-required-msg="Please enter a date." data-date-msg="Please enter a valid date."/>

虽然验证器确实正确验证了“必需”条件,但它似乎没有验证日期格式是否正确或是否有效。例如,“abc”作为有效日期传递,2013-18-85 也是如此。如何使用验证器确保格式正确的有效日期?

4

2 回答 2

15

如果你想要validate一个date你需要定义一个规则(没有内置规则)。

尝试定义:

$("#date").kendoValidator({
    rules: {
        date: function (input) {
            var d = kendo.parseDate(input.val(), "yyyy-MM-dd");
            return d instanceof Date;
        }
    }
});

注意:请记住,KendoUI 首先使用parseFormats选项解析日期,然后将其转换为format选项,最后运行验证。这就是为什么我在验证中使用yyyy-MM-dd而不是["MM/dd/yyyy", "dd/MM/yyyy"].

于 2013-01-03T00:20:35.677 回答
4

答案是:

<script src="@Url.Content("~/Scripts/kendo/2015.2.805/kendo.aspnetmvc.min.js")"></script>
<script type="text/javascript">
    kendo.ui.validator.rules.mvcdate = function (input) {
        //use the custom date format here
        //kendo.parseDate - http://docs.telerik.com/kendo-ui/api/javascript/kendo#methods-parseDate
        return !input.is("[data-val-date]") || input.val() === "" || kendo.parseDate(input.val(), "@(MvcApplication.AppCulture.DateTimeFormat.ShortDatePattern)") !== null;
    };
</script>

这里有更多信息:http ://docs.telerik.com/kendo-ui/aspnet-mvc/validation

干杯

于 2015-08-19T21:38:28.153 回答