Formatting international phone numbers

The CRM SDK contains a sample to format US phone numbers and it works pretty well. However, there are customers outside the US and the sample doesn't work with international phone numbers. An easy formatting rule is replacing any occurrence of '(', ')' or a space with a dash. People can then enter the phone number in their preferred way, but get the same output.


var originalPhoneNumber = "+49 (89) 12345678";
var formattedPhoneNumber = originalPhoneNumber.replace(/[^0-9,+]/g, "-");
formattedPhoneNumber = formattedPhoneNumber.replace(/-+/g, "-");
alert(formattedPhoneNumber);


The first call to the replace method changes every character in the input string that is not a digit and not the plus sign (which is used for international
numbers) to the dash symbol. However, the output is +49--89--12345678, so the second call replaces all occurrences of multiple dashes with a single
one, giving a final result of +49-89-12345678.

Retrieving all fields inside a CRM form

If you want to loop over all fields (input fields) on a CRM form, you can use the following script



//CRM 4 Jscript



for (var index in crmForm.all) {
var control = crmForm.all[index];

if (control.req && (control.Disabled != null)) {
//control is a CRM form field
}
}


The conditions mean that a control must have the "req" attribute and the "Disabled" method. This seems a good indicator for a CRM form field.