我正在做一个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.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)。
我正在寻找任何其他可能的替代方式来从用户那里获得正确的日期。
答案 0 :(得分:2)
您可以使用此正则表达式。
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>
编辑:刚刚格式化
答案 1 :(得分:1)
答案 2 :(得分:0)
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
<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>