1

I'm doing a PHP project which needs to take data from the user which includes date. The datepicker method using jQuery seems not working. So, i decided to get the correct date using javascript.

So far, i am able to check the correct format using following script.

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;
}

I want to validate those ranges month(1-12)/Day(1-31)/year(2000-2014).

I'm looking for any other possible alternate way to get the correct date from user too.

devst3r
  • 552
  • 7
  • 25
  • This **must** have been asked and answered before :) perhaps here? -> [Javascript: how to validate dates in format MM-DD-YYYY?](http://stackoverflow.com/questions/276479/javascript-how-to-validate-dates-in-format-mm-dd-yyyy)? – davidkonrad Sep 30 '14 at 13:20
  • Yes, i have seen it davidkonrad. But, i'm not asking for a specific format MM/DD/YYYY. Anyway, i need to get the correct date. I didn't want any incorrect date like 98/99/1099. – devst3r Oct 01 '14 at 07:16

3 Answers3

2

You can use this Regular Expression.

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)$/ ;

This is example for that.

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

EDIT : Just formatted

Paresh Navadiya
  • 38,095
  • 11
  • 81
  • 132
Lalit Bhudiya
  • 4,332
  • 4
  • 26
  • 32
1

Try Moment.js plugin

Validation will look like this:

new moment(input.value).isValid();
Jevgeni
  • 2,556
  • 1
  • 15
  • 18
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>
R D
  • 1,330
  • 13
  • 30