469,623 Members | 908 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,623 developers. It's quick & easy.

Javascript Date Validation in MM/DD/YYY output format

The following javascript code gives me the date validation that I need
except
after the correct date is entered into the field, it puts the date in
the wrong format

EXAMPLE: User enters 2/14/2006 and it shows in the field Feb 14 2006
after the onBlur
I want it to leave the formatting of the date in the field as 2/14/2006

and not change the input to Feb 14 2006
I am very new to javascript and I don't know what to take out in the
following code to accomplish what I need. Can Anyone HELP? Thanks so
much
<SCRIPT LANGUAGE="JavaScript">
<!-- 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 = "US"; //United States date style
//var strDatestyle = "EU"; //European 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] = "Jan";
strMonthArray[1] = "Feb";
strMonthArray[2] = "Mar";
strMonthArray[3] = "Apr";
strMonthArray[4] = "May";
strMonthArray[5] = "Jun";
strMonthArray[6] = "Jul";
strMonthArray[7] = "Aug";
strMonthArray[8] = "Sep";
strMonthArray[9] = "Oct";
strMonthArray[10] = "Nov";
strMonthArray[11] = "Dec";
strDate = datefield.value;
if (strDate.length < 1) {
return true;

}
for (intElementNr = 0; 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;
}
function doDateCheck(from, to) {
if (Date.parse(from.value) <= Date.parse(to.value)) {
alert("The dates are valid.");

}
else {
if (from.value == "" || to.value == "")
alert("Both dates must be entered.");
else
alert("To date must occur after the from date.");
}

}
// End -->
</script>

Feb 15 '06 #1
3 8494
pmarisole wrote:
The following javascript code gives me the date validation that I need
except
after the correct date is entered into the field, it puts the date in
the wrong format

EXAMPLE: User enters 2/14/2006 and it shows in the field Feb 14 2006
after the onBlur
I want it to leave the formatting of the date in the field as 2/14/2006

and not change the input to Feb 14 2006


I'm not going to give you the answer - but I'll help you to learn the
answer yourself:

Research the Javascript Date() object - I would recommend using the
Javascript object reference on w3schools. You will find that there are
ways to get the numerical month, day of the month, and full year
separatly. Using those, you can create a string with whatever
formatting you want.

Feb 15 '06 #2
pmarisole wrote:
The following javascript code gives me the date validation that I need
except
after the correct date is entered into the field, it puts the date in
the wrong format

EXAMPLE: User enters 2/14/2006 and it shows in the field Feb 14 2006
after the onBlur
I want it to leave the formatting of the date in the field as 2/14/2006

and not change the input to Feb 14 2006
Most of all you need to know is here:

<URL:http://www.merlyn.demon.co.uk/js-date9.htm>
You will also find ways of validating dates that are much more concise
than what you've posted.

Month, day, year format is used in only one country that I know of -
pretty much the entire rest of the world uses either day, month, year or
year, month, day.

Read about ISO 8601 date formats, here's a piece by the University of
Illinois on why you should be using them:

<URL:http://www.uic.edu/depts/accc/software/isodates/isocontents.html>

I am very new to javascript and I don't know what to take out in the
following code to accomplish what I need. Can Anyone HELP? Thanks so
much


Read about date validation either by searching the archives here or use
this:

<URL:http://www.merlyn.demon.co.uk/js-date4.htm>

[...]

--
Rob
Feb 16 '06 #3
JRS: In article <11*********************@g44g2000cwa.googlegroups. com>,
dated Wed, 15 Feb 2006 10:52:37 remote, seen in
news:comp.lang.javascript, pmarisole <jb******@midsouth.rr.com> posted :

function LeapYear(intYear) {
if (intYear % 100 == 0) {
if (intYear % 400 == 0) { return true; }

}
else {
if ((intYear % 4) == 0) { return true; }

}
return false;
}

The code performs two tests first to get a return which only occurs for
one year in 400. Performing the 4-year test first gives a finished
result three times out of four. While speed will not be critical,
there's no point in using a really silly method.

Did all that code come off the Web, out of a book, or from a teacher; or
was it your own invention? I'd not use any of it.

As an exercise, write the LeapYear function efficiently. Then delete
it, because it is not needed.

Read the newsgroup FAQ; see below.

The sensible way to input and output dates is given by ISO 8601 - as
YYYY-MM-DD - which has been incorporated as National Standards
throughout the civilised world.
*** DO NOT MULTI-POST ***

*** AND FIND OUT THAT VBSCRIPT IS NOT JAVASCRIPT ***

*** AND CHECK YOUR SUBJECT LINE BEFORE POSTING ***

--
© John Stockton, Surrey, UK. ?@merlyn.demon.co.uk Turnpike v4.00 IE 4 ©
<URL:http://www.jibbering.com/faq/> JL/RC: FAQ of news:comp.lang.javascript
<URL:http://www.merlyn.demon.co.uk/js-index.htm> jscr maths, dates, sources.
<URL:http://www.merlyn.demon.co.uk/> TP/BP/Delphi/jscr/&c, FAQ items, links.
Feb 16 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Brian Conway | last post: by
5 posts views Thread by | last post: by
10 posts views Thread by bonnie.tangyn | last post: by
2 posts views Thread by sorobor | last post: by
reply views Thread by gheharukoh7 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.