如何使用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

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

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

试试插件

验证将如下所示:

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>