出生日期验证持续显示

出生日期验证持续显示,第1张

出生日期验证持续显示

进行客户端验证的原因是,所

jquery.validate.js
使用的插件会
jquery.validate.unobtrusive.js
根据
MM/dd/yyyy
格式验证日期,并根据格式验证您输入的日期
dd/MM/yyyy

jquery.validate.js
用于验证的特定代码是

date: function(value, element) {    return this.optional(element) || !/Invalid|NaN/.test(new Date(value));}

这取决于您使用的浏览器会给出不同的结果(在Chrome中,

new Date('22/12/1986')
返回,
InvalidDate
但在FireFox中,它返回的
1987-10-11T13:30:00.000Z
是有效日期,而不是您输入的日期)

您需要覆盖

$.validator
文化中的日期格式。一种选择是使用jquery.globalize插件。

另外,您可以编写自己的脚本。请注意,以下脚本取自我自己的插件,该插件与

@Html.DatePickerFor()
生成日期选择器的扩展方法结合使用。扩展方法基于服务器区域性为日期格式添加html属性,并使用
varformat =regex.exec(this.inputFormat);
我注释掉的代码行读取,并用您的硬编码格式替换。如果您只想要
dd/MM/yyyy
格式,则可以简化脚本,因为您只需要’little-
endian’格式

<script type="text/javascript">    // Override default date validator format to allow culture specific format    $.validator.methods.date = function (value, element) {        return this.optional(element) || globalDate(value).isValid();    };    globalDate = function (value) {        // Initialise a new date        var date = new Date(0);        if (value == undefined) { // Return todays date return date;        }        // Get the components of the format        // The separator can be forward slash, hyphen, dot and/or space        var regex = new RegExp(/([dMy]+)([s/.-]+)([dMy]+)([s/.-]+)([dMy]+)/);//------------- see notes above        //var format = regex.exec(this.inputFormat);        var format = regex.exec('dd/MM/yyyy');//-------------         // Get the components of the value        regex = new RegExp(/(d+)([s/.-]+)(d+)([s/.-]+)(d+)/);        value = regex.exec(value);        // Check the value is valid        if (value === null || value[2] !== format[2] || value[4] !== format[4]) { // Its not valid date.setTime(Number.NaN); return date;        }        // TODO: What if year entered as 2 digits?        var day = Number.NaN;        var month = Number.NaN;        var year = Number.NAN;        if (format[1].charAt(0) === 'd') { // little-endian (day, month, year) day = parseInt(value[1]); month = parseInt(value[3]) - 1; year = parseInt(value[5]);        } else if (format[1].charAt(0) === 'M') { // middle-endian (month, day, year) day = parseInt(value[3]); month = parseInt(value[1]) - 1; year = parseInt(value[5]);        } else { // big endian (year, month, day) day = parseInt(value[5]); month = parseInt(value[3]) - 1; year = parseInt(value[1]);        }        date.setFullYear(year);        date.setMonth(month);        date.setDate(day);        // Check its valid        if (date.getDate() !== day || date.getMonth() !== month || date.getFullYear() !== year) { date.setTime(Number.NaN); return date;        }        return date;    }    // Methods     Date.prototype.isValid = function () {        return !isNaN(this.getTime());    }</script>

旁注:您的

[Regularexpression]
属性不执行任何 *** 作,可以将其删除。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5011832.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存