Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations derfloh on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

date validation script help! 1

Status
Not open for further replies.

damipera

Technical User
Joined
Dec 1, 2005
Messages
134
Location
GB
hi guys! can you please tell me what to do with this script. this is working ok apart from one thing. when i type-in let's say, 03 march 2008, and when i click somewhere else, it takes out the '0' from the '03'. it just writes: 3 march 2008. i would like to retain that '0'. how can i achieve this? thnx in advance.

Code:
<SCRIPT LANGUAGE="JavaScript">
<!-- Original:  Mike Welagen (welagenm@hotmail.com) -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! [URL unfurl="true"]http://javascript.internet.com[/URL] -->

<!-- Begin
function checkdate(objName) {
var datefield = objName;
if (chkdate(objName) == false) {
datefield.select();
alert("That date is invalid.  Please try again.");
datefield.focus();
return false;
}
else {
return true;
   }
}
function chkdate(objName) {
var strDatestyle = "EU"; //United States date style
//var strDatestyle = "EU";  //European date style; //var strDatestyle = "US"; //United States date style
var strDate;
var strDateArray;
var strDay;
var strMonth;
var strYear;
var intday;
var intMonth;
var intYear;
var booFound = false;
var datefield = objName;
var strSeparatorArray = new Array("-"," ","/",".");
var intElementNr;
var err = 0;
var strMonthArray = new Array(12);
strMonthArray[0] = "January";
strMonthArray[1] = "February";
strMonthArray[2] = "March";
strMonthArray[3] = "April";
strMonthArray[4] = "May";
strMonthArray[5] = "June";
strMonthArray[6] = "July";
strMonthArray[7] = "August";
strMonthArray[8] = "September";
strMonthArray[9] = "October";
strMonthArray[10] = "November";
strMonthArray[11] = "December";
strDate = datefield.value;
if (strDate.length < 1) {
return true;
}
for (intElementNr = 1; intElementNr < strSeparatorArray.length; intElementNr++) {
if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
strDateArray = strDate.split(strSeparatorArray[intElementNr]);
if (strDateArray.length != 3) {
err = 1;
return false;
}
else {
strDay = strDateArray[0];
strMonth = strDateArray[1];
strYear = strDateArray[2];
}
booFound = true;
   }
}
if (booFound == false) {
if (strDate.length>5) {
strDay = strDate.substr(0, 2);
strMonth = strDate.substr(2, 2);
strYear = strDate.substr(4);
   }
}
if (strYear.length == 2) {
strYear = '20' + strYear;
}
// US style
if (strDatestyle == "US") {
strTemp = strDay;
strDay = strMonth;
strMonth = strTemp;
}
intday = parseInt(strDay, 10);
if (isNaN(intday)) {
err = 2;
return false;
}
intMonth = parseInt(strMonth, 10);
if (isNaN(intMonth)) {
for (i = 0;i<12;i++) {
if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
intMonth = i+1;
strMonth = strMonthArray[i];
i = 12;
   }
}
if (isNaN(intMonth)) {
err = 3;
return false;
   }
}
intYear = parseInt(strYear, 10);
if (isNaN(intYear)) {
err = 4;
return false;
}
if (intMonth>12 || intMonth<1) {
err = 5;
return false;
}
if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
err = 6;
return false;
}
if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
err = 7;
return false;
}
if (intMonth == 2) {
if (intday < 1) {
err = 8;
return false;
}
if (LeapYear(intYear) == true) {
if (intday > 29) {
err = 9;
return false;
}
}
else {
if (intday > 28) {
err = 10;
return false;
}
}
}
if (strDatestyle == "US") {
datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
}
else {
datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
}
return true;
}
function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }
}
else {
if ((intYear % 4) == 0) { return true; }
}
return false;
}
//  End -->
</script>


<input name="start" type="text" id="demo2" size="25" onBlur="checkdate(this)">
 
Replace this:

Code:
if (strDatestyle == "US") {
datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
}
else {
datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
}

with this:

Code:
if (strDatestyle == 'US') {
	datefield.value = strMonthArray[intMonth-1] + ' ' + [!]padNum(intday)[/!] + ' ' + strYear;
} else {
	datefield.value = [!]padNum(intday)[/!] + ' ' + strMonthArray[intMonth-1] + ' ' + strYear;
}

and then add this function:

Code:
function padNum(numToPad) {
	var s = numToPad.toString();
	if (s.length == 1) return('0' + s);
	return(s);
}

Hope this helps,
Dan

Coedit Limited - Delivering standards compliant, accessible web solutions

[tt]Dan's Page [blue]@[/blue] Code Couch
[/tt]
 
.

WOW! YOU'RE AWESOME. Thank you very much Dan(BillyRayPreachersSon)!!!
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top