javascript - jqueryUI Datepicker 加上 dd/mm/yyyy 格式的验证器

标签 javascript jquery regex jquery-ui

我有一个带有 jQ​​uery UI 日期选择器的表单,然后使用 jQuery 验证插件对其进行验证。

日期选择器是使用以下方法创建的:

$("#dob").datepicker({
        changeMonth: true,
        changeYear: true,
        dateFormat: "dd/mm/yy",
        onSelect: function (){
            this.focus();   
        },
    });

但是,当我要求验证插件使用 dd/mm/yyyy 进行验证时,它似乎以美国格式进行验证。这意味着任何月份的 12 号之后的任何日期都将被视为无效。

我环顾四周,发现了一种方法来添加一种不同的方式来使用正则表达式验证日期:

$.validator.addMethod(
    "australianDate",
    function(value, element) {
        return value.match(/^(0?[1-9]|[12][0-9]|3[01])\/(0?[1-9]|1[012])\/((19|20)\\d\\d)$/);
    },
    "Please enter a date in the format dd/mm/yyyy."
);

然后添加到规则中:

        dob:{
             required:true,
             australianDate: true
        },

但这对于任何输入似乎仍然失败。

我使用的正则表达式是我过去在 php 中使用过的,比一般的 (any2numbers/any2numbers/any4numbers) 表达式更准确,我希望能够在 javascript 中使用它还有。

javascript 正则表达式需要采用与 php 不同的格式吗?是我哪里出错了..

非常感谢任何帮助。

最佳答案

只是评论:

更好的日期验证函数是:

// Expects date string in format dd/mm/yyyy
function isValidDate(s) {
  if (s === null || s.length !== 10) {
    return false;
  }
  s = s.split('/');
  var d = new Date(s[2], --s[1], s[0]);
  return d.getFullYear() == s[2] && d.getDate() == s[0];
}

关于javascript - jqueryUI Datepicker 加上 dd/mm/yyyy 格式的验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597785/

相关文章:

javascript - 如何将元素的 id 传递给 .js 文件?

javascript - 从不带时区的字符串构造 JavaScript 日期(适用于 JqueryUI datepicker)

java - 正则表达式 - 将所有匹配项作为单个匹配项返回

mysql - 像 MySQL 一样更新列

php - 此正则表达式匹配尚未编码的符号的任何陷阱

javascript - 将一个数组的三个实例推送到另一个数组 - javaScript

javascript - 三 mustache 上的 Ractive JS 事件

javascript - 开启 JQuery 切换按钮

JavaScript 隐藏和显示切换,隐藏 DIV

javascript - 如何使用/jquery 为元素创建新的父类?