Client Script - Validating Phone

I've found two real ways to verify the data meets the needs you have.

  1. Client script to do entire validation
  2. Client script to ask server if data is valid

This will use all client-side validation. I set up a config variable
where you need to;

function onChange(control, oldValue, newValue, isLoading) {
var config = {
field: 'phone',
required_length: 10,
error: 'Invalid telephone number. Please enter your telephone number including area code.',
sections: {
one: 3,
two: 3,
three: 4
}
};
// no need to change the below
if (isLoading || newValue === '') {
return;
}
config.error_flag = false;
g_form.hideFieldMsg(config.field, true);
var regexGoodForm = new RegExp("^\\([\\d]{"
+ config.sections.one
+ "}\\)\\s[\\d]{"
+ config.sections.two
+ "}\\-[\\d]{"
+ config.sections.three
+ "}$", "g"
);
var isGoodForm = regexGoodForm.test(newValue);
//if value does not match (n1) n2-n3 format
if (!isGoodForm) {
var regexNonDigits = /[^\d]/g;
// remove all non number from string
var userPhone = newValue.replace(regexNonDigits, '');
// verify if number is x digits
var regexXDigits = new RegExp("[^d]\{"
+ config.required_length
+ "\}", "g");
var isXDigits = regexXDigits.test(userPhone);
if (isXDigits) {
// if true, reformat to (n1) n2-n3
var onePlusTwo = config.sections.two + config.sections.one;
var onePlusTwoPlusThree = config.sections.three + onePlusTwo;
var newNum = '';
newNum += '(' + userPhone.substring(0, config.sections.one) + ') ';
newNum += userPhone.substring(config.sections.one, onePlusTwo) + '-';
newNum += userPhone.substring(onePlusTwo, onePlusTwoPlusThree);
g_form.setValue(config.field, newNum);
} else {
// if true not, trigger error
config.error_flag = true;
}
if (config.error_flag) {
g_form.clearValue(config.field);
g_form.showFieldMsg(config.field, config.error, 'error');
}
}
}