Can anyone explain how does the foll JS function validate date which needs to be of the form mm/dd/yyyy.
<script type="text/javascript">
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
}
</script>
The first part uses regex to check if the value is in the required format
mm/dd/yyyy. This is ensure that validation fails if it not a/delimited string with 2, 2 and 4 numbers respectively.The second part creates a date object using the individual
dd,mmandyyyyvalues and checks the properties of the created object with the original values in the input. This is to ensure that the validation fails for values like02/31/2015if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))The above statement is to ensure that the created object reflects the same values that were used for creating it. Also, note that month index starts at
0, hence the-1during creation and+1during checking.