我有一个剑道日期选择器,其构造如下:
$("#date").kendoDatePicker({
format: "yyyy-MM-dd",
footer: " ",
parseFormats: ["MM/dd/yyyy", "dd/MM/yyyy"]
});
我想使用kendo验证器验证日期是否包含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。如何使用验证器确保格式正确的有效日期?
答案 0 :(得分:13)
如果您想要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"]
中使用的原因。
答案 1 :(得分:3)
答案是:
<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
干杯