Jquery dd/MM/yyyy日期格式验证

cha*_*ara 6 validation asp.net-mvc jquery date asp.net-mvc-4

我在我的应用程序中使用默认的ASP.NET MVC 4验证包.在视图中,我有一个格式为"dd/MM/yyyy"的日期字段,并且jquery验证无法验证格式.然后我添加了以下代码来覆盖默认行为.

$(function () {
        $.validator.methods.date = function (value, element) {
            Globalize.culture("en-GB");
            // you can alternatively pass the culture to parseDate instead of
            // setting the culture above, like so:
           // parseDate(value, null, "en-AU")
            return this.optional(element) || Globalize.parseDate(value) !== null;
        }
    });
Run Code Online (Sandbox Code Playgroud)

然后解决了日期验证问题,现在我的应用程序不会激活客户端验证,而是服务器端验证.这种行为可能是什么原因?

Dai*_*Bok 12

为我找到一个更简单的解决方案: 在jQuery Validate中,日期格式dd/mm/yyyy的客户端验证失败

喜欢它,因为我不需要新的第三方脚本或任何额外的插件

基本上覆盖这样的验证方法:

$(document).ready(function () {
    $.validator.methods.date = function(value, element) {
        return this.optional(element) || parseDate(value, "dd-MM-yyyy") !== null;
    };
});
Run Code Online (Sandbox Code Playgroud)


jca*_*lis 6

您可以使用其他方法中的dateITA.

http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/additional-methods.js

$("#myform").validate({
    rules: {
        dateITA: true
    }
})
Run Code Online (Sandbox Code Playgroud)

我希望它有效.


cha*_*ara 2

它缺少 globalize.js 文件。我修改了代码如下,现在工作正常。

从https://github.com/jquery/globalize下载文件

包含对相关 .js 文件的引用(您也可以使用 NuGet 包安装它,这是我使用的选项。)

<script src="~/Scripts/globalize/globalize.js"></script>
<script src="~/Scripts/globalize/cultures/globalize.culture.en-GB.js"></script>

$(document).ready(function () {
        $.culture = Globalize.culture("en-GB");
        $.validator.methods.date = function (value, element) {
            //This is not ideal but Chrome passes dates through in ISO1901 format regardless of locale 
            //and despite displaying in the specified format.

            return this.optional(element)
                || Globalize.parseDate(value, "dd/MM/yyyy", "en-GB")
                || Globalize.parseDate(value, "yyyy-mm-dd");
        }
    });
Run Code Online (Sandbox Code Playgroud)