Last active
May 20, 2020 16:46
-
-
Save luisenriquecorona/5107905b38dd1250ceb9d04449f1c648 to your computer and use it in GitHub Desktop.
In a high-volume data-entry environment, where productivity is measured in opera- tors’ keystrokes and time spent per form, you want to build more intelligence in a form. For example, you want to allow two-digit year entries, but code the validation routine so that it fills the field with the expanded version of the date because the backend data…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function checkDate(fld) { | |
var mo, day, yr; | |
var entry = fld.value; | |
var reLong = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/; | |
var reShort = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/; | |
var valid = (reLong.test(entry)) || (reShort.test(entry)); | |
if (valid) { | |
var delimChar = (entry.indexOf("/") != -1) ? "/" : "-"; | |
var delim1 = entry.indexOf(delimChar); | |
var delim2 = entry.lastIndexOf(delimChar); | |
mo = parseInt(entry.substring(0, delim1), 10); | |
day = parseInt(entry.substring(delim1+1, delim2), 10); | |
yr = parseInt(entry.substring(delim2+1), 10); | |
// handle two-digit year | |
if (yr < 100) { | |
var today = new Date( ); | |
// get current century floor (e.g., 2000) | |
var currCent = parseInt(today.getFullYear( ) / 100) * 100; | |
// two digits up to this year + 15 expands to current century | |
var threshold = (today.getFullYear( ) + 15) - currCent; | |
if (yr > threshold) { | |
yr += currCent - 100; | |
} else { | |
yr += currCent; } | |
} | |
var testDate = new Date(yr, mo-1, day); | |
if (testDate.getDate( ) == day) { | |
if (testDate.getMonth( ) + 1 == mo) { | |
if (testDate.getFullYear( ) == yr) { | |
// fill field with database-friendly format | |
fld.value = mo + "/" + day + "/" + yr; | |
return true; | |
} else { | |
alert("There is a problem with the year entry."); | |
} | |
} else { | |
alert("There is a problem with the month entry."); | |
} | |
} else { | |
alert("There is a problem with the date entry."); | |
} | |
} else { | |
alert("Incorrect date format. Enter as mm/dd/yyyy."); | |
} | |
return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment