首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JQuery验证dd/mm/yyyy格式的验证日期

使用JQuery验证dd/mm/yyyy格式的验证日期
EN

Stack Overflow用户
提问于 2014-06-24 07:01:35
回答 6查看 225.2K关注 0票数 42

我正在输入出生日期和死亡日期。所需验证

  1. 死亡日期应超过出生日期。
  2. 日期格式为dd/mm/yyyy
  3. 少于或等于今天的日期。

验证不像预期的那样工作,也无法解决问题。请帮帮忙。

小提琴密码

JS库

  1. 日历/数据报警器的JQuery UI
  2. 表单验证的JQuery验证
  3. 验证库的其他方法 var Date=新日期();var authorValidator = $("#itemAuthorForm").validate({ dateOfBirth:{dateOfBirth: true,date : true,dateITA : true,dateLessThan:'# expiredDate‘},expiredDate:{false: false,date : true,dateITA :true,dateGreaterThan:"#dateOfBirth“} },函数(元素){ if ($(元素).val()){$(元素).valid(););var dateOptionsDOE ={ maxDate : dateFormat:"dd/mm/yy",changeMonth : true,changeYear : true,onClose : function(selectedDate) {$(“#dateOfBirth”).datepicker(“选项”,"maxDate",selectedDate);};var dateOptionsDOB ={ maxDate : dateFormat:"dd/mm/yy",changeMonth : true,changeYear : true,onClose : function(selectedDate) {$(“#expiredDate”).datepicker(“选项”,"minDate",selectedDate);};};jQuery.validator.addMethod("dateGreaterThan",函数(value,element,params) ){ if (Params).val( === )“)返回true;如果(!/无效的Invalid/..test(新日期(值){返回新日期(值)>新日期($(Params).val());}返回isNaN(值)& isNaN($(params).val()) .val()x (Number(value) >Number($(Params).val());},“必须大于{0}”;jQuery.validator.addMethod("dateLessThan",函数(值、元素、参数){ if ( params) .val() === "")返回true;if (!/无效NaN/..test(新日期(值){返回新日期(值)<新日期(参数).val();}返回isNaN(value) && isNaN($(params).val()) .val().val();};$("#expiredDate").datepicker( $.extend({} ),$.datepicker.Region‘’en GB‘,dateOptionsDOE);$(#dateOfBirth).datepicker( $.extend({},$.datepicker.Region‘’,dateOptionsDOB));
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-06-24 08:53:07

您不需要date验证器。它的不支持dd/mm/yyyy格式,这就是为什么你要得到“请输入一个有效的日期”的信息输入,如13/01/2014。您已经有了dateITA验证器,它根据需要使用dd/mm/yyyy格式。

就像date验证器一样,dateGreaterThandateLessThan的代码调用new Date作为输入字符串,并具有相同的问题解析日期。您可以使用这样的函数来解析日期:

代码语言:javascript
运行
复制
function parseDMY(value) {
    var date = value.split("/");
    var d = parseInt(date[0], 10),
        m = parseInt(date[1], 10),
        y = parseInt(date[2], 10);
    return new Date(y, m - 1, d);
}
票数 22
EN

Stack Overflow用户

发布于 2015-11-04 19:04:19

这也将检查闰年。这是纯正则表达式,所以它比任何库都快(也比moment.js快)。但是如果您要在代码中使用大量的日期,我建议您使用moment.js

代码语言:javascript
运行
复制
var dateRegex = /^(?=\d)(?:(?:31(?!.(?:0?[2469]|11))|(?:30|29)(?!.0?2)|29(?=.0?2.(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:\x20|$))|(?:2[0-8]|1\d|0?[1-9]))([-.\/])(?:1[012]|0?[1-9])\1(?:1[6-9]|[2-9]\d)?\d\d(?:(?=\x20\d)\x20|$))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;

console.log(dateRegex.test('21/01/1986'));

http://regexper.com/....

票数 46
EN

Stack Overflow用户

发布于 2015-11-26 11:38:50

如果你使用即时的js库,它可以很容易地做到这样-

代码语言:javascript
运行
复制
jQuery.validator.addMethod("validDate", function(value, element) {
        return this.optional(element) || moment(value,"DD/MM/YYYY").isValid();
    }, "Please enter a valid date in the format DD/MM/YYYY");
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24380305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档