/* 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>
|