2011-06-07 101 views
0

我一直在试图实现一个jQuery函数来验证日期格式,但我遇到了一个奇怪的问题。当数“8”或“9”包含在一天或一个月,(例如:08/06/2011),它说的日期无效...jquery日期验证错误

的演示,请访问: http://www.geektantra.com/projects/jquery-form-validate/advanced_demo/

感谢您的帮助!

+0

试试这个http://stackoverflow.com/questions/511439/custom-date-format-with-jquery-validation-plugin – 2011-06-07 12:49:42

+0

一个精度,它只有onccurs '08'和'09'为日或月。它看起来可以连接到二月的闰年,从28日到29日不等...任何想法? – Carine 2011-06-07 13:18:23

回答

4

当值0809出现问题时,几乎可以肯定忘记在parseInt()上指定基数参数。

如果未指定它,它会尝试从输入中自动检测基础,如果它找到前导零,它会尝试将其解析为八进制数。对于数字0007这不是一个问题,它甚至与基数为10时的计算结果相同,但由于明显的原因,0809是无效的八进制数。

为了避免这个问题,在未来,请确保您始终将基数参数强制解析数作为基数为10,无论输入:

var value = parseInt(someString, 10); 

检查出你的JavaScript各地的29行你的HTML文件,并将其更改为以下:

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" 
});