By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,853 Members | 974 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,853 IT Pros & Developers. It's quick & easy.

Javascript Date Validation in MM/DD/YYY output format

P: n/a
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
Share this Question
Share on Google+
3 Replies


P: n/a
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

P: n/a
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

P: n/a
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.