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