繁体   English   中英

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

[英]How to validate the Month, Day and Year ranges using javascript?

我正在做一个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)。

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

您可以使用此正则表达式。

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>

编辑 :刚刚格式化

试试Moment.js插件

验证将如下所示:

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

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM