Skip to content

Instantly share code, notes, and snippets.

View asimmittal's full-sized avatar

Asim Mittal asimmittal

View GitHub Profile
/*******************************************************
* setupPhoneFields
* Now let's rig up all the fields with the specified
* 'className' to work like phone number input fields
*******************************************************/
function setupPhoneFields(className){
var lstPhoneFields = document.getElementsByClassName(className);
for(var i=0; i < lstPhoneFields.length; i++){
var input = lstPhoneFields[i];
/*******************************************************
* onKeyUp(e)
* when a key is pressed up, grab the contents in that
* input field, format them in line with XXX-XXX-XXXX
* format and validate if the text is infact a complete
* phone number. Adjust the border color based on the
* result of that validation
*******************************************************/
function onKeyUp(e){
var input = e.target;
/*******************************************************
* validatePhone
* return true if the string 'p' is a valid phone
*******************************************************/
function validatePhone(p){
var phoneRe = /^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/;
var digits = p.replace(/\D/g, "");
return phoneRe.test(digits);
}
/*******************************************************
* formatPhoneText
* returns a string that is in XXX-XXX-XXXX format
*******************************************************/
function formatPhoneText(value){
value = this.replaceAll(value.trim(),"-","");
if(value.length > 3 && value.length <= 6)
value = value.slice(0,3) + "-" + value.slice(3);
else if(value.length > 6)
var filter = [];
//since we're looking for phone numbers, we need
//to allow digits 0 - 9 (they can come from either
//the numeric keys or the numpad)
const keypadZero = 48;
const numpadZero = 96;
//add key codes for digits 0 - 9 into this filter
for(var i = 0; i <= 9; i++){