I've been trying to use the Date Validation script provided in the Javascript FAQ and I'm having trouble with it using the onChange event in my date fields. It seems to always give me the alert even if it's a valid date. Here is the script:
-----------------------------------------------------------
<html>
<head>
<script language="JavaScript">
function isLeap(year){
if(year % 400 == 0){
return true;
} else if((year % 4 == 0) && (year % 100 != 0)){
return true
} else return false;
};
function days_in(month, year){
if(month == 4 || month == 6 || month == 9 || month == 11){
return 30;
} else if(!isLeap(year) && month == 2){
return 28;
} else if(isLeap(year) && month == 2){
return 29;
} else return 31;
};
function checkDate(myItem){
var myArrayDate, myDay, myMonth, myYear, myString, myYearDigit;
myString = myItem.value + "";
if (myString == "" || myString == "mm/dd/yyyy"
{
myItem.value = "mm/dd/yyyy";
return true;
}
myArrayDate = myString.split("/"
;
myDay = Math.round(parseFloat(myArrayDate[1]));
myMonth = Math.round(parseFloat(myArrayDate[0]));
myYear = Math.round(parseFloat(myArrayDate[2]));
myString = myYear + "";
myYearDigit = myString.length;
if (isNaN(myDay) || isNaN(myMonth) || isNaN(myYear) || (myYear < 1) || (myDay < 1) || (myMonth < 1) || (myMonth > 12) || (myYearDigit != 4) || (myDay > days_in(myMonth, myYear))){
alert("Please check your Date format. (mm/dd/yyyy)"
;
myItem.value = "mm/dd/yyyy";
return true;
} else{
return false;
}
};
</script>
</head>
<body>
<input type="text" name="myDate1" onChange="checkDate(this.value)">
</body>
</html>
-----------------------------------------------------------
any ideas? thanks...
-----------------------------------------------------------
<html>
<head>
<script language="JavaScript">
function isLeap(year){
if(year % 400 == 0){
return true;
} else if((year % 4 == 0) && (year % 100 != 0)){
return true
} else return false;
};
function days_in(month, year){
if(month == 4 || month == 6 || month == 9 || month == 11){
return 30;
} else if(!isLeap(year) && month == 2){
return 28;
} else if(isLeap(year) && month == 2){
return 29;
} else return 31;
};
function checkDate(myItem){
var myArrayDate, myDay, myMonth, myYear, myString, myYearDigit;
myString = myItem.value + "";
if (myString == "" || myString == "mm/dd/yyyy"
myItem.value = "mm/dd/yyyy";
return true;
}
myArrayDate = myString.split("/"
myDay = Math.round(parseFloat(myArrayDate[1]));
myMonth = Math.round(parseFloat(myArrayDate[0]));
myYear = Math.round(parseFloat(myArrayDate[2]));
myString = myYear + "";
myYearDigit = myString.length;
if (isNaN(myDay) || isNaN(myMonth) || isNaN(myYear) || (myYear < 1) || (myDay < 1) || (myMonth < 1) || (myMonth > 12) || (myYearDigit != 4) || (myDay > days_in(myMonth, myYear))){
alert("Please check your Date format. (mm/dd/yyyy)"
myItem.value = "mm/dd/yyyy";
return true;
} else{
return false;
}
};
</script>
</head>
<body>
<input type="text" name="myDate1" onChange="checkDate(this.value)">
</body>
</html>
-----------------------------------------------------------
any ideas? thanks...