web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics CRM (Archived)

Auto Formatting Phone Numbers in Leads Forms

(0) ShareShare
ReportReport
Posted on by

I know that I need to use JavaScript for this, but I really don't know where to start. I need to auto format the input of numbers to '1 (xxx) xxx-xxxx ' Some code snippets or something would be helpful. I'm a beginner with JS and CRM. Thanks!

*This post is locked for comments

I have the same question (0)
  • Verified answer
    Gopalan Bhuvanesh Profile Picture
    11,401 on at

    Hi

    Please check the code in this:

    www.powerobjects.com/.../formatting-a-phone-field-in-crm-2013

  • Community Member Profile Picture
    on at

    Where would I put this kind of event?

  • Verified answer
    Gopalan Bhuvanesh Profile Picture
    11,401 on at

    This is within the form, for the onChange event of the field where you want to format the value.

    Please check the screenshots in that article.

  • Community Member Profile Picture
    on at

    I did however the code isn't working. I added the event to the field and it's not doing anything.

  • Community Member Profile Picture
    on at

    One of the scripts for this record has caused an error. For more details, download the log file.

    ReferenceError: auto is not defined at eval (eval at RunHandlerInternal (bleauprints.crm.dynamics.com/.../ClientApiWrapper.aspx), <anonymous>:1:1)

  • Verified answer
    Gopalan Bhuvanesh Profile Picture
    11,401 on at

    Please check the code in Visual Studio or any JS editor.

    Remove any special characters

    (remove & lt; with <)

  • Community Member Profile Picture
    on at

    Are you saying to replace the & symbol with the <) ?

  • Gopalan Bhuvanesh Profile Picture
    11,401 on at

    When I copied into my VS I found there were many special characters in the code.

    Would you please copy the code here, so that I can check it.

    Use 'Use Rich formatting' option when you reply and use the code pasting option button

    </>

    in the menu and paste the code please.

  • Community Member Profile Picture
    on at
    //I removed all of the & symbols. I'm not sure if that's what I was supposed to do.

    function formatPhoneNumber(context) {
        var phoneNumber = context.getEventSource();
     
        // Verify that the field is valid
        if (typeof (phoneNumber) != "undefined" <)amp;amp; phoneNumber != null) {
            if (phoneNumber.getValue() != null) {
                // Remove any special characters
                var sTmp = phoneNumber.getValue().replace(/[^0-9,A-Z,a-z]/g, "");
     
                // Translate any letters to the equivalent phone number, if method is included
                try {
                    if (sTmp.length lt;= 10) {
                        sTmp = TranslateMask(sTmp);
                    }
                    else {
                        sTmp = TranslateMask(sTmp.substr(0, 10)) + sTmp.substr(10, sTmp.length);
                    }
                }
                catch (e) {
                }
     
                // If the number is a length we expect and support, 
                // format the translated number
                switch (sTmp.length) {
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 8:
                    case 9:
                        break;
                    case 7:
                        phoneNumber.setValue(sTmp.substr(0, 3) + "-" + sTmp.substr(3, 4));
                        break;
                    case 10:
                        phoneNumber.setValue("(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4));
                        break;
                    default:
                        phoneNumber.setValue("(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4) + " " + sTmp.substr(10, sTmp.length));
                        break;
                }
            }
        }
    }
     
    /// lt;summarygt;
    /// TranslateMask() will step through each character of an 
    /// input string and pass that character to the 
    /// TranslatePhoneLetter() helper method
    /// lt;/summarygt;
    /// lt;param name="s"gt;Input string to translatelt;/paramgt;
    function TranslateMask( s )
    {
      var ret = "";
     
      //loop through each char, and pass it to the translation method
      for (var i=0; ilt;s.length; i++) 
      {
        ret += TranslatePhoneLetter(s.charAt(i))
      }
     
      return ret;
    }
     
    /// lt;summarygt;
    /// TranslatePhoneLetter() takes a character and returns the 
    /// equivalent phone number digit if it is alphanumeric
    /// lt;/summarygt;
    /// lt;param name="s"gt;Character to translatelt;/paramgt;
    function TranslatePhoneLetter( s )
    {
     var sTmp = s.toUpperCase();
     var ret = s;
     
     switch( sTmp )
     {
     case "A":
     case "B":
     case "C": 
      ret = 2;
      break;
     case "D":
     case "E":
     case "F": 
      ret = 3;
      break;
     case "G":
     case "H":
     case "I": 
      ret = 4;
      break;
     case "J":
     case "K":
     case "L": 
      ret = 5;
      break;
     case "M":
     case "N":
     case "O": 
      ret = 6;
      break;
     case "P":
     case "Q":
     case "R":
     case "S": 
      ret = 7;
      break;
     case "T":
     case "U":
     case "V": 
      ret = 8;
      break;
     case "W":
     case "X":
     case "Y":
     case "Z": 
      ret = 9;
      break;
     default: 
      ret = s;
      break;
     }
     
     return ret;
    }
  • Suggested answer
    Gopalan Bhuvanesh Profile Picture
    11,401 on at
    function formatPhoneNumber(context) {
        var phoneNumber = context.getEventSource();
    
        // Verify that the field is valid
        if (typeof (phoneNumber) != "undefined" && phoneNumber != null) {
            if (phoneNumber.getValue() != null) {
                // Remove any special characters
                var sTmp = phoneNumber.getValue().replace(/[^0-9,A-Z,a-z]/g, "");
    
                // Translate any letters to the equivalent phone number, if method is included
                try {
                    if (sTmp.length <= 10) {
                        sTmp = TranslateMask(sTmp);
                    }
                                    else {
                        sTmp = TranslateMask(sTmp.substr(0, 10)) + sTmp.substr(10, sTmp.length);
                    }
                }
                catch (e) {
                }
    
                // If the number is a length we expect and support, 
                // format the translated number
                switch (sTmp.length) {
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                    case 6:
                    case 8:
                    case 9:
                        break;
                    case 7:
                        phoneNumber.setValue(sTmp.substr(0, 3) + "-" + sTmp.substr(3, 4));
                        break;
                    case 10:
                        phoneNumber.setValue("(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4));
                        break;
                    default:
                        phoneNumber.setValue("(" + sTmp.substr(0, 3) + ") " + sTmp.substr(3, 3) + "-" + sTmp.substr(6, 4) + " " + sTmp.substr(10, sTmp.length));
                        break;
                }
            }
        }
    }
    
    /// lt;summarygt;
    /// TranslateMask() will step through each character of an 
    /// input string and pass that character to the 
    /// TranslatePhoneLetter() helper method
    /// lt;/summarygt;
    /// lt;param name="s"gt;Input string to translatelt;/paramgt;
    function TranslateMask(s) {
        var ret = "";
    
        //loop through each char, and pass it to the translation method
        for (var i = 0; i < s.length; i++)
        {
            ret += TranslatePhoneLetter(s.charAt(i))
    
        }
    
        return ret;
    }
    
    /// lt;summarygt;
    /// TranslatePhoneLetter() takes a character and returns the 
    /// equivalent phone number digit if it is alphanumeric
    /// lt;/summarygt;
    /// lt;param name="s"gt;Character to translatelt;/paramgt;
    function TranslatePhoneLetter(s) {
        var sTmp = s.toUpperCase();
        var ret = s;
    
        switch (sTmp) {
            case "A":
            case "B":
            case "C":
                ret = 2;
                break;
            case "D":
            case "E":
            case "F":
                ret = 3;
                break;
            case "G":
            case "H":
            case "I":
                ret = 4;
                break;
            case "J":
            case "K":
            case "L":
                ret = 5;
                break;
            case "M":
            case "N":
            case "O":
                ret = 6;
                break;
            case "P":
            case "Q":
            case "R":
            case "S":
                ret = 7;
                break;
            case "T":
            case "U":
            case "V":
                ret = 8;
                break;
            case "W":
            case "X":
            case "Y":
            case "Z":
                ret = 9;
                break;
            default:
                ret = s;
                break;
    
        }
    
        return ret;
    }

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics CRM (Archived)

#1
SA-08121319-0 Profile Picture

SA-08121319-0 4

#1
Calum MacFarlane Profile Picture

Calum MacFarlane 4

#3
Alex Fun Wei Jie Profile Picture

Alex Fun Wei Jie 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans