如何使用javascript验证月、日和年范围?
我正在做一个PHP项目,需要从用户那里获取包含日期的数据。使用jQuery的datepicker方法似乎不起作用。因此,我决定使用javascript获取正确的日期 到目前为止,我能够使用以下脚本检查正确的格式如何使用javascript验证月、日和年范围?,javascript,php,html,Javascript,Php,Html,我正在做一个PHP项目,需要从用户那里获取包含日期的数据。使用jQuery的datepicker方法似乎不起作用。因此,我决定使用javascript获取正确的日期 到目前为止,我能够使用以下脚本检查正确的格式 function checkdate(input) { var dateformat=/^\d{2}\/\d{2}\/\d{4}$/ //Check for format validity if (!dateformat.test(input.value)) { document.get
function checkdate(input)
{
var dateformat=/^\d{2}\/\d{2}\/\d{4}$/ //Check for format validity
if (!dateformat.test(input.value))
{
document.getElementById("error").innerHTML="Invalid Date format, use MM/DD/YYYY";
return false;
}
else
{
document.getElementById("error").innerHTML="";
return true;
}
我想验证这些范围每月(1-12)/天(1-31)/年(2000-2014)
我正在寻找任何其他可能的替代方法来从用户那里获取正确的日期。试试插件
验证将如下所示:
new moment(input.value).isValid();
您可以使用这个正则表达式
var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(200\d|2010|2011|2012|2013|2014)$/ ;
这就是一个例子
<html>
<head>
<script>
function validateDate() {
var testdate = document.getElementById('ttt').value;
var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(200\d|2010|2011|2012|2013|2014)$/ ;
alert( date_regex.test(testdate));
}
</script>
</head>
<body>
<input type='text' id='ttt' />
<input type='button' onclick='validateDate()' />
</body>
</html>
函数validateDate(){
var testdate=document.getElementById('ttt')。值;
var date_regex=/^(0[1-9]| 1[0-2])\/(0[1-9]| 1\d | 2\d | 3[01])\/(200\d | 2010 | 2011 | 2012 | 2013 | 2014)$/;
警报(日期/规则测试(测试日期));
}
编辑:刚格式化JS:
function checkdate(input){
var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
var returnval=false
if (!validformat.test(input.value))
alert("Invalid Date Format. Please correct and submit again.")
else{ //Detailed check for valid date ranges
var monthfield=input.value.split("/")[0]
var dayfield=input.value.split("/")[1]
var yearfield=input.value.split("/")[2]
var dayobj = new Date(yearfield, monthfield-1, dayfield)
if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||
(dayobj.getFullYear()!=yearfield))
alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
else
returnval=true
}
if (returnval==false) input.select()
return returnval
}
HTML
有效日期格式:mm/dd/yyyy
regex单独使用也无济于事,因为您必须处理闰年这是正确的:)不同月份的30/31也是一个问题。js是一个很棒的lib,你应该试试它。这一定是以前问过并回答过的:)也许在这里?->?是的,我看过大卫康拉德。但是,我并不是要求特定的格式MM/DD/YYYY。不管怎样,我需要得到正确的日期。我不想要任何错误的日期,比如98/99/1099。
<form onSubmit="return checkdate(this.mydate)">
<input type="text" name="mydate" />
<input type="submit" value="submit" /><br />
<b>Valid date format:</b> mm/dd/yyyy<br />
<input type="submit" value="submit" />
</form>