Jasinski Technical Wiki

Navigation

Home Page
Index
All Pages

Quick Search
»
Advanced Search »

Contributor Links

Create a new Page
Administration
File Management
Login/Logout
Your Profile

Other Wiki Sections

Software

PoweredBy

Page History: TelephoneNumberTextBox Class - ASP.NET

Compare Page Revisions



« Older Revision - Back to Page History - Newer Revision »


Page Revision: Fri, Sep 18, 2009, 12:49 PM


This page is a Draft. Its content is not complete and might contain errors.

This page is part of the Class Library Pages collection.
Click the icon to see the index.

Source Code

VB.NET

Imports Microsoft.VisualBasic
'===================================
'   Files required by this class    
'                                   
'   (1) Scripts/MtnTextBox.js       
'-----------------------------------
Namespace AcmeBroomCompany

    Public Class MtnTextBox
    Inherits TextBox

        Public Sub New()
            Me.Attributes.Add("onkeydown", "javascript:backspacerDOWN(this,event);")
            Me.Attributes.Add("onkeyup", "javascript:backspacerUP(this,event, 1);")
            Me.MaxLength = 12
        End Sub

    End Class

End Namespace

JavaScript

/* This script is based on the javascript code of Roman Feldblum (web.developer@programmer.net) 
Original script : http://javascript.internet.com/forms/format-phone-number.html 
Original script is revised by Eralper Yilmaz (http://www.eralper.com) 
Revised script : http://www.kodyaz.com */

var zChar = new Array(' ', '(', ')', '-', '.');
var maxphonelength = 13;
var phonevalue1;
var phonevalue2;
var cursorposition;

function ParseForNumber1(object){
phonevalue1 = ParseChar(object.value, zChar);
}
function ParseForNumber2(object){
phonevalue2 = ParseChar(object.value, zChar);
}

function backspacerUP(object,e, bMTN) { 
if(e){ 
e = e 
} else {
e = window.event 
} 
if(e.which){ 
var keycode = e.which 
} else {
var keycode = e.keyCode 
}

ParseForNumber1(object)

if(keycode >= 48){
//ValidatePhone(object)

if (bMTN == 1)
    FormatPhone(object);
else
    FormatNPANXX(object);
    
}
}

function backspacerDOWN(object,e) { 
if(e){ 
e = e 
} else {
e = window.event 
} 
if(e.which){ 
var keycode = e.which 
} else {
var keycode = e.keyCode 
}
ParseForNumber2(object)
} 

function GetCursorPosition(){

var t1 = phonevalue1;
var t2 = phonevalue2;
var bool = false
for (i=0; i<t1.length; i++)
{
if (t1.substring(i,1) != t2.substring(i,1)) {
if(!bool) {
cursorposition=i
bool=true
}
}
}
}

function ValidatePhoneX(object){

var p = phonevalue1

p = p.replace(/[^\d]*/gi,"")

if (p.length < 3) {
object.value=p
} else if(p.length==3){
pp=p;
d4=p.indexOf('-')
//d5=p.indexOf(')')
if(d4==-1){
//pp="("+pp;
pp=pp+"-";
}
//if(d5==-1){
//pp=pp+")";
//}
object.value = pp;
} else if(p.length>3 && p.length < 7){
//p ="(" + p; 
l30=p.length;
p30=p.substring(0,3);
p30=p30+"-"

p31=p.substring(4,l30);
pp=p30+p31;

object.value = pp; 

} else if(p.length >= 7){
p ="(" + p; 
l30=p.length;
p30=p.substring(0,4);
p30=p30+")"

p31=p.substring(4,l30);
pp=p30+p31;

l40 = pp.length;
p40 = pp.substring(0,8);
p40 = p40 + "-"

p41 = pp.substring(8,l40);
ppp = p40 + p41;

object.value = ppp.substring(0, maxphonelength);
}

GetCursorPosition()

if(cursorposition >= 0){
if (cursorposition == 0) {
cursorposition = 2
} else if (cursorposition <= 2) {
cursorposition = cursorposition + 1
} else if (cursorposition <= 5) {
cursorposition = cursorposition + 2
} else if (cursorposition == 6) {
cursorposition = cursorposition + 2
} else if (cursorposition == 7) {
cursorposition = cursorposition + 4
e1=object.value.indexOf(')')
e2=object.value.indexOf('-')
if (e1>-1 && e2>-1){
if (e2-e1 == 4) {
cursorposition = cursorposition - 1
}
}
} else if (cursorposition < 11) {
cursorposition = cursorposition + 3
} else if (cursorposition == 11) {
cursorposition = cursorposition + 1
} else if (cursorposition >= 12) {
cursorposition = cursorposition
}

var txtRange = object.createTextRange();
txtRange.moveStart( "character", cursorposition);
txtRange.moveEnd( "character", cursorposition - object.value.length);
txtRange.select();
}

}

function ParseChar(sStr, sChar)
{
if (sChar.length == null) 
{
zChar = new Array(sChar);
}
else zChar = sChar;

for (i=0; i<zChar.length; i++)
{
sNewStr = "";

var iStart = 0;
var iEnd = sStr.indexOf(sChar[i]);

while (iEnd != -1)
{
sNewStr += sStr.substring(iStart, iEnd);
iStart = iEnd + 1;
iEnd = sStr.indexOf(sChar[i], iStart);
}
sNewStr += sStr.substring(sStr.lastIndexOf(sChar[i]) + 1, sStr.length);

sStr = sNewStr;
}

return sNewStr;
}


function FormatPhone(PhoneField)
{
 var phone;
 var phoneLen;
 var d4;
  
 phone=PhoneField.value
 phone=phone.replace("(","")
 phone=phone.replace("(","")
 phone=phone.replace("(","")
 phone=phone.replace(")","")
 phone=phone.replace(")","")
 phone=phone.replace(")","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phone=phone.replace("/","")
 phone=phone.replace("/","")
 phone=phone.replace("/","")
 phoneLen=phone.length
 
 if(phoneLen==3)
 {
  phone=phone+"-";
 }
 else
 {
  if(phoneLen>3)
  {
   phone=phone.substring(0,3) + "-" + phone.substring(3, phone.length);
  }
 }
 if(phoneLen==6)
 {
  phone=phone+"-";
 }
 else
 {
  if(phoneLen>6)
  {
   phone=phone.substring(0,7) + "-" + phone.substring(7, phone.length);
  }
 }
 
 PhoneField.value="";
 PhoneField.value=phone;
}



function FormatNPANXX(NPANXXField)
{
 var phone;
 var phoneLen;
 var d4;
  
 phone=NPANXXField.value
 phone=phone.replace("(","")
 phone=phone.replace("(","")
 phone=phone.replace("(","")
 phone=phone.replace(")","")
 phone=phone.replace(")","")
 phone=phone.replace(")","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phone=phone.replace("-","")
 phoneLen=phone.length
 
 if(phoneLen==3)
 {
  phone=phone+"-";
 }
 else
 {
  if(phoneLen>3)
  {
   phone=phone.substring(0,3) + "-" + phone.substring(3, phone.length);
  }
 }
 if(phoneLen==6)
 {
  //phone=phone+"-";
 }
 else
 {
  if(phoneLen>6)
  {
   //phone=phone.substring(0,7) + "-" + phone.substring(7, phone.length);
  }
 }
 
 NPANXXField.value="";
 NPANXXField.value=phone;
}
 
 
function ValidatePhone (objPhone) {
    var strPhone = objPhone.value;
    
    if (strPhone == '')
        return true;
        
    var vNPANumber, vNXXNumber, vRangeNumber

    if ((strPhone.charAt(3) != '-') || (strPhone.charAt(7) != '-') || (strPhone.length != 12))
    {
        alert("Phone number should be entered in 999-999-9999 format.");
        objPhone.focus();
        return false;
    }
    
    //alert(strPhone);
    vNPANumber = strPhone.substring(0, 3)
    vNXXNumber = strPhone.substring(4, 7)
    vRangeNumber = strPhone.substring(8, 12)

    //alert(vNPANumber.length);
    //alert(vNPANumber);
    //alert(vNXXNumber.length);
    //alert(vNXXNumber);
    //alert(vRangeNumber.length);
    //alert(vRangeNumber);
    if ((vNPANumber.length != 3) || (vNXXNumber.length != 3) || (vRangeNumber.length != 4))
    {
        alert("Phone number should be entered in 999-999-9999 format.");
        objPhone.focus();
        return false;
    }
    
    if ( (isNaN(vNPANumber)) || (isNaN(vNXXNumber)) || (isNaN(vRangeNumber)) )
    {
        alert("Phone number should be entered in 999-999-9999 format.");
        objPhone.focus();
        return false;
    }

    return true;
}

ScrewTurn Wiki version 3.0.1.400. Some of the icons created by FamFamFam. Except where noted, all contents Copyright © 1999-2024, Patrick Jasinski.