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

问题描述 投票:0回答:7

我在应用程序中使用默认的 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;
        }
    });

然后日期验证问题得到解决,现在我的应用程序不会触发客户端验证,而是触发服务器端验证。造成这种行为的原因是什么?

jquery asp.net-mvc validation asp.net-mvc-4 date
7个回答
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;
    };
});

6
投票

您可以通过其他方法使用 dateITA。

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

$("#myform").validate({
    rules: {
        dateITA: true
    }
})

我希望它有效。


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");
        }
    });

1
投票

谢谢戴。必须使用 date.js 库中类似的东西。见下图:

$.validator.methods.date = function(value, element) { 
  return this.optional(element) || Date.parseExact(value, "dd-MM-yyyy"); 
};

1
投票

您可以使用以下代码来验证:

    jQuery.validator.addMethod("validdate", function(value, element) {
       return this.optional(element) ||  /^\d{1,2}\/\d{1,2}\/\d{4}$/.test(value);
    }, "Please enter valid date.");

请根据您的代码使用 $ 或 jQuery。在这里,您只需要在 jQuery 代码中添加规则,并在您的服装规则中使用 validdate。


0
投票

我更喜欢采用 MM/dd/yyyy 格式并使用相同的 jQuery 验证。如果您覆盖 jQuery 日期验证,这将非常有效。

$.validator.methods.date = function (value, element) {
    value = dateValue(value);
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());;
}

function dateValue(value) {
    var date = value.split("/");
    return date[2] + "/" + date[1] + "/" + date[0]
}

0
投票

函数提交(){

    if (ValidateDates() == false) {
        ShowErrorMessage("Event date required")
        return;
    }

}

函数 ValidateDates() {

    var fromDate = $("#FromDate").val();
    var toDate = $("#ToDate").val();

    if (fromDate == "" | toDate == "") {
        return false;
    }
    else {
        return true;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.