日期验证-如何绕过Javascript';自动更正日期?
我想通过日期验证-如何绕过Javascript';自动更正日期?,javascript,jquery,validation,date,Javascript,Jquery,Validation,Date,我想通过Javascript验证日期,并找到了一个很好的答案: 但是,当我尝试使用它来验证日期时,似乎Javascript通过获取最接近的有效日期来自动更正我的日期。因此,这将返回true,即使2014-11-31不是有效日期(Javascript月份从0开始,因此10等于11月): 函数isValidDate(d){ if(Object.prototype.toString.call(d)!=“[对象日期]”) 返回false; return!isNaN(d.getTime()); } v
Javascript
验证日期,并找到了一个很好的答案:
但是,当我尝试使用它来验证日期时,似乎Javascript
通过获取最接近的有效日期来自动更正我的日期。因此,这将返回true
,即使2014-11-31
不是有效日期(Javascript
月份从0
开始,因此10
等于11月):
函数isValidDate(d){
if(Object.prototype.toString.call(d)!=“[对象日期]”)
返回false;
return!isNaN(d.getTime());
}
var测试日期=新日期(2014年10月31日);
控制台日志(测试日期);
控制台日志(isValidDate(测试日期))代码>在JavaScript中处理日期时,我是Moment.js的忠实粉丝。正如您在这里看到的,他们在验证日期方面做得很好:
说到用JavaScript处理日期,我非常喜欢Moment.js。正如您在这里看到的,他们在验证日期方面做得很好:
可以使用日期对象中的自动更正来验证日期。只需对照日期对象中的内容检查输入:
var y=2014,m=10,d=31;
var测试日期=新日期(y、m、d);
var有效=
测试日期。getFullYear()==y&&
测试日期。getMonth()==m&&
test_date.getDate()==d;
文件。书写(有效)代码>您可以使用日期对象中的自动更正来验证日期。只需对照日期对象中的内容检查输入:
var y=2014,m=10,d=31;
var测试日期=新日期(y、m、d);
var有效=
测试日期。getFullYear()==y&&
测试日期。getMonth()==m&&
test_date.getDate()==d;
文件。书写(有效)代码>这是我不久前编写的一个函数,它演示了Guffa的解决方案
function isValidDate(checkDate) {
if(!/\d\d\/\d\d\/\d\d\d\d/.test(checkDate)) {
return false; // checkDate is not formatted as ##/##/####
} else {
// split checkDate into three pieces
var strMM = checkDate.split('/')[0];
var strDD = checkDate.split('/')[1];
var strYYYY = checkDate.split('/')[2];
// create new Date() object from split pieces
var strDateCheck = new Date(strYYYY,(strMM - 1),strDD);
// evaluate each piece of resulting date object against each corresponding piece of checkDate
if(((strDateCheck.getMonth() + 1) == strMM) && (strDateCheck.getDate() == strDD) && (strDateCheck.getFullYear() == strYYYY)) {
/* if you wish, add additional validation constraints here */
return true; // all three pieces match exactly
} else {
return false; // at least one piece did not match
}
}
}
这是我不久前写的一个函数,它演示了Guffa的解决方案
function isValidDate(checkDate) {
if(!/\d\d\/\d\d\/\d\d\d\d/.test(checkDate)) {
return false; // checkDate is not formatted as ##/##/####
} else {
// split checkDate into three pieces
var strMM = checkDate.split('/')[0];
var strDD = checkDate.split('/')[1];
var strYYYY = checkDate.split('/')[2];
// create new Date() object from split pieces
var strDateCheck = new Date(strYYYY,(strMM - 1),strDD);
// evaluate each piece of resulting date object against each corresponding piece of checkDate
if(((strDateCheck.getMonth() + 1) == strMM) && (strDateCheck.getDate() == strDD) && (strDateCheck.getFullYear() == strYYYY)) {
/* if you wish, add additional validation constraints here */
return true; // all three pieces match exactly
} else {
return false; // at least one piece did not match
}
}
}
哦,谢谢。这实际上是一个很酷的解决方案。“如果javascript决定更改我的日期,那一定是错误的”:)哦,谢谢。这实际上是一个很酷的解决方案。“如果javascript决定更改我的日期,那一定是错误的”:)谢谢。我将尝试这个库,但我有点想把我的工作限制在jQuery
和纯Javascript
。谢谢。我将尝试这个库,但我有点想把我的工作限制在jQuery
和纯Javascript
。