如何使用javascript验证月,日和年范围?

时间:2014-09-30 13:10:59

标签: 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.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)。

我正在寻找任何其他可能的替代方式来从用户那里获得正确的日期。

3 个答案:

答案 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)

尝试Moment.js插件

验证将如下所示:

new moment(input.value).isValid();

答案 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>