我有一个带有 jQuery 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/