format ssn
tweaks and fixes for formatting ssn
by Terrance Smith
HTML
<input type="text" id="ssnfield"value="157845645"/>
<input type="button" id="tester" value="Format SSN" onclick="formatThis('ssnfield');" />
<input type="button" id="testerlegacybtn" value="Format SSN Legacy Behavior" onclick="formatThisLegacy('ssnfield');" />
<input type="button" id="validatebtn" value="Validate SSN" onclick="ValidateSSN(document.getElementById('ssnfield').value);" />
JavaScript
function isNumber(value) {
value = value.toString().replace(/\$|\(|\)|,/g, "");
return !isNaN(parseFloat(value)) && isFinite(value);
}
var formatSSN = function(tempSSN) {
var retval = tempSSN.value;
if (tempSSN.UseLegacyBehavior) {
if (retval.length === 9 && isNumber(retval)) {
retval = retval.substr(0, 3) + "-" + retval.substr(3, 2) + "-" + retval.substr(5, 4);
}
} else {
if (retval.length === 9 && isNumber(retval)) {
retval = retval.substr(0, 3) + "-" + retval.substr(3, 2) + "-" + retval.substr(5, 4);
}
}
return retval;
};
function ValidateSSN(SSN) {
//returns "" or error message
var i, x, y, msg;
SSN = SSN.toString();
//remove common spacers
SSN = SSN.replace("-", "");
SSN = SSN.replace(" ", "");
SSN = SSN.replace(".", "");
if (SSN.length !== 9) {
return "Social Security Number must be 9 digits (excluding hyphens or spaces).";
}
msg = "Invalid Social Security Number.";
var re = /^[0-9]+$/;
if (!(SSN.match(re))) {
return msg;
}
//check for 8 repeating numbers
y = 11111111;
for (i = 1; i <= 9; i++) {
if (SSN.indexOf(y.toString()) > -1) {
return msg;
}
y += 11111111;
}
if (SSN == "123456789" || SSN == "987654321") {
return msg;
}
// http://www.usrecordsearch.com/ssn.htm
// http://www.socialsecurity.gov/employer/stateweb.htm
if (SSN.substr(0, 3) === "000" || SSN.substr(0, 3) === "666" || SSN.substr(3, 2) === "00" || SSN.substr(5, 4) === "0000") {
return msg;
}
return "";
}
function isValidSSN(value) {
var temp = value;
if (isNumber(value) === false && value.toString().length != 9) {
var re = /^([0-6]\d{2}|7[0-6]\d|77[0-2])([ \-]?)(\d{2})\2(\d{4})$/;
if (!re.test(value)) {
return false;
}
if (value.indexOf("-") != -1) {
temp =...