Jquery dd / MM / yyyy日期格式validation

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

$(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; } }); 

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

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

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

基本上覆盖这样的validation方法:

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

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

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

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

我希望它有效。

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

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

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

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

谢谢戴。 不得不使用date.js库中类似的东西。 见下文:

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

您可以使用以下代码进行validation:

  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用于您的服装规则。

我更喜欢在MM / dd / yyyy中格式化并使用相同的jQueryvalidation。 如果您覆盖jQuery日期validation,这将非常有用。

 $.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] }