Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 4 of 4
  1. #1
    New Coder
    Join Date
    Jan 2007
    Posts
    55
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Format phone number

    Hi there...I have a field in a form in asp which shows a value from the database...the value from the DB is 1234567890...how do I format it to show (123)-456-7890...do I do something in asp or sql?

    Thanks!

  • #2
    Regular Coder
    Join Date
    Jan 2005
    Posts
    155
    Thanks
    0
    Thanked 0 Times in 0 Posts
    you can create a function that will format it in your ASP
    Code:
    function formatPhone(strPhone)
         if len(strPhone) = 10 then
              strPhone = "(" & left(strPhone,3) & ")-" & mid(strPhone,4,3) & "-" & right(strPhone,4)
         else
              strPhone = ""
         end if
    end function
    
    response.Write(formatPhone(phone_value))

  • #3
    New to the CF scene
    Join Date
    May 2007
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts
    Code:
    /*
    FormatTelNo method takes in the current element of the form and formats the phone number 
    in "(123 456-7890" format. This method should be fired on every key entry 
    (using onKeyUp method) in the current element of the form. If any key other than 0 to 9 
    is entered, it erases that entry rightaway. Maxlength and size of the current
    element of the form should be 13.
    Eg. <netui:textBox size="13" maxlength="13" onKeyUp="JavaScript:formatTelNo (this);" onBlur="JavaScript:checkTelNo (this);" onKeyDown="JavaScript:formatTelNo (this);"/>    
    */
    function formatTelNo (telNo)
    {
        // If it's blank, save yourself some trouble by doing nothing.
        if (telNo.value == "") return;
    
        
    
        var phone = new String (telNo.value);
        
        phone = phone.substring(0,14);
    
        /*
        "." means any character. If you try to use "(" and ")", the regular expression becomes 
        complicated sice both are reserve characters and escaping them sometimes fails. So just 
        use "." for any character and replace it later.
        */
        if (phone.match (".[0-9]{3}.[0-9]{3}-[0-9]{4}") == null)
        {
            /*
            Following "if" is for user making any changes to the formatted tel. no. If you don't put this 
            "if" condition, the user can not correct a digit by first deleting it and then entering a 
            correct one, since this will fire two "onkeyup" events : first one on deleting a 
            character and second one on entering the correct one. The first "onkeyup" event will fire this 
            function which will reformatt the tel no before the user gets a chace to correct the digit. This 
            will surely confuse the user. The "if" condition below eliminates that.
            */
            if (phone.match (".[0-9]{2}.[0-9]{3}-[0-9]{4}|" + ".[0-9].[0-9]{3}-[0-9]{4}|" +
                ".[0-9]{3}.[0-9]{2}-[0-9]{4}|" + ".[0-9]{3}.[0-9]-[0-9]{4}") == null)
            {
                /*
                You will reach here only if the user is still typing the number or if he/she has 
                messed up already formatted number. 
                */
                var phoneNumeric = phoneChar = "", i;
                // Loop thru what user has entered.
                for (i=0;i<phone.length;i++)
                {
                    // Go thru what user has entered one character at a time.
                    phoneChar = phone.substr (i,1);
        
                    // If that character is not a number or is a White space, ignore it. Only if it is a digit, 
                    // concatinate it with a number string.
                    if (!isNaN (phoneChar) && (phoneChar != " ")) phoneNumeric = phoneNumeric + phoneChar;
                }
        
                phone = "";
                // At this point, you have picked up only digits from what user has entered. Loop thru it.
                for (i=0;i<phoneNumeric.length;i++)
                {
                    // If it's the first digit, throw in "(" before that.
                    if (i == 0) phone = phone + "(";
                    // If you are on the 4th digit, put ") " before that.
                    if (i == 3) phone = phone + ") ";
                    // If you are on the 7th digit, insert "-" before that.
                    if (i == 6) phone = phone + "-";
                    // Add the digit to the phone charatcer string you are building.
                    phone = phone + phoneNumeric.substr (i,1)
                }
            }
        }
        else
        { 
            // This means the tel no is in proper format. Make sure by replacing the 0th, 4th and 8th character.
            phone = "(" + phone.substring (1,4) + ") " + phone.substring (5,8) + "-" + phone.substring(9,13); 
        }
        // So far you are working internally. Refresh the screen with the re-formatted value.
        if (phone != telNo.value) telNo.value = phone;
    }
    
    /*
    CheckTelNo method takes in current element of the form as input. This method should be 
    fired as the user attempts to leave the current element in the form (by using onBlur method). 
    It checks to see if the format of the phone is "(123) 456-7890".
    Eg. <netui:textBox size="13" maxlength="13" onBlur="JavaScript:checkTelNo (this);" onKeyUp="JavaScript:formatTelNo (this);" onKeyDown="JavaScript:formatTelNo (this);"/>  
    */      
    function checkTelNo (telNo)
    {
        if (telNo.value == "") return;
        if (telNo.value.match (".[0-9]{3}.[0-9]{3}-[0-9]{4}") == null)
        {
            if (telNo.value.match ("[0-9]{10}") != null)
                formatTelNo (telNo)              
        }
    }
    
    //Enter-listener 
     //if the user presses ENTER KEY submit the Form
     //Added by Guruprasad Thorvey on 03/23/05 to fix issue #21632
    function checkEnterForFindListing(e){ 
        var characterCode;
        
        if(e && e.which){ 
            e = e;
            characterCode = e.which ;
        }
        else{
            e = event;
            characterCode = e.keyCode; 
        }
        
        if(characterCode == 13){ //13 = the code for pressing ENTER 				
            document.forms[getNetuiTagName("findListingForm")].submit();
            return false; 
        }
        else{
            return true ;
        }
    
    }
    <input type="text" value="" size="25" onkeyup="formatTelNo(this)" onkeydown="formatTelNo(this)" name="phone">

  • #4
    Senior Coder
    Join Date
    Apr 2003
    Location
    England
    Posts
    1,192
    Thanks
    5
    Thanked 13 Times in 13 Posts
    henlly that is javascript not ASP.

    Regardless, mehere's answer will do exactly what you want but watch out for phone numbers that aren't in the correct format in the first place. Different countries use different formats and you may get people missing area codes or adding international sections to the front etc.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •