我一直在尝试实现一个jQuery函数来验证日期格式,但我遇到了一个奇怪的问题。如果日期或月份中包含数字“8”或“9”,(例如:08/06/2011)则表示日期无效......
这里有一个演示: http://www.geektantra.com/projects/jquery-form-validate/advanced_demo/
谢谢你的帮助!
答案 0 :(得分:4)
如果值08
和09
出现问题,您几乎肯定忘记在parseInt()
上指定基数参数。
如果未指定,则尝试从输入中自动检测基数,如果找到前导零,则尝试将其解析为八进制数。对于数字00
到07
这不是一个问题,它甚至评估为基数为10,但由于显而易见的原因08
和09
是无效的八进制号。
为避免将来出现此问题,请确保始终将radix参数设置为强制将数字解析为base-10,而不管输入如何:
var value = parseInt(someString, 10);
查看HTML文件第29行附近的javascript,并将其更改为以下内容:
jQuery("#ValidDate").validate({
expression: "if (!isValidDate(parseInt(VAL.split('-')[2], 10), parseInt(VAL.split('-')[0], 10), parseInt(VAL.split('-')[1], 10))) return false; else return true;",
message: "Please enter a valid Date"
});