/*
JavaScript Bible, Fourth Edition
by Danny Goodman
John Wiley & Sons CopyRight 2001
*/
<HTML>
<HEAD>
<TITLE>Simple Date Validation</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function validDate(fld) {
var testMo, testDay, testYr, inpMo, inpDay, inpYr, msg
var inp = fld.value
status = ""
// attempt to create date object from input data
var testDate = new Date(inp)
// extract pieces from date object
testMo = testDate.getMonth() + 1
testDay = testDate.getDate()
testYr = testDate.getFullYear()
// extract components of input data
inpMo = parseInt(inp.substring(0, inp.indexOf("/")), 10)
inpDay = parseInt(inp.substring((inp.indexOf("/") + 1), inp.lastIndexOf("/")), 10)
inpYr = parseInt(inp.substring((inp.lastIndexOf("/") + 1), inp.length), 10)
// make sure parseInt() succeeded on input components
if (isNaN(inpMo) || isNaN(inpDay) || isNaN(inpYr)) {
msg = "There is some problem with your date entry."
}
// make sure conversion to date object succeeded
if (isNaN(testMo) || isNaN(testDay) || isNaN(testYr)) {
msg = "Couldn't convert your entry to a valid date. Try again."
}
// make sure values match
if (testMo != inpMo || testDay != inpDay || testYr != inpYr) {
msg = "Check the range of your date value."
}
if (msg) {
// there's a message, so something failed
alert(msg)
// work around IE timing problem with alert by
// invoking a focus/select function through setTimeout();
// must pass along reference of fld (as string)
setTimeout("doSelection(document.forms['" +
fld.form.name + "'].elements['" + fld.name + "'])", 0)
return false
} else {
// everything's OK; if browser supports new date method,
// show just date string in status bar
status = (testDate.toLocaleDateString) ? testDate.toLocaleDateString() :
"Date OK"
return true
}
}
// separate function to accommodate IE timing problem
function doSelection(fld) {
fld.focus()
fld.select()
}
</SCRIPT>
</HEAD>
<BODY>
<H1>Simple Date Validation</H1>
<HR>
<FORM NAME="entryForm" onSubmit="return false">
Enter any date (mm/dd/yyyy): <INPUT TYPE="text" NAME="startDate"
onChange="validDate(this)">
</FORM>
</BODY>
</HTML>
|