Mega Code Archive

 
Categories / JavaScript DHTML / Development
 

Simple Date Validation

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