添加输入的电话号码验证

时间:2010-05-19 23:18:23

标签: javascript html forms

我最近填写了一份表格,当我到达电话号码textBox时,我注意到一些非常酷的事情。当我输入我的号码时,通用电话符号会自动添加。例如:

我开始输入区号'555'

我的输入更改为1(555)

测试刚刚发生的事情,我退回了它,并迅速将其添加回来。

所以我的问题是,如何让这个输入发生?

2 个答案:

答案 0 :(得分:4)

我使用一个名为automask的javascript库 - 你看不到面具,但它不会让你在面具外键入任何东西

例如,如果你的面具是### - ### - ####,则忽略任何其他字符(即不是0-9),并自动输入短划线。

如果您想查看

,我可以发布图书馆

实施的例子

<input type=text name=ssn onkeypress="return autoMask(this,event, '###-##-####');">


// email kireol at yahoo.com
// autoMask - an adaption of anyMask
// 
// this will force #'s, not allowing alphas where the #'s are, and auto add -'s
function autoMask(field, event, sMask) {
    //var sMask = "**?##?####";

var KeyTyped = String.fromCharCode(getKeyCode(event));
var targ = getTarget(event);
keyCount = targ.value.length;
if (getKeyCode(event) < 32)
{
    return true;
}
if(keyCount == sMask.length && getKeyCode(event) > 32)
{
    return false;
}
if ((sMask.charAt(keyCount+1) != '#') && (sMask.charAt(keyCount+1) != 'A' ) && (sMask.charAt(keyCount+1) != '~' ))
{
    field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
    return false;
}

if (sMask.charAt(keyCount) == '*')
    return true;

if (sMask.charAt(keyCount) == KeyTyped)
{
    return true;
}

if ((sMask.charAt(keyCount) == '~') && isNumeric_plusdash(KeyTyped))
    return true;

if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
    return true;

if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
    return true;

if ((sMask.charAt(keyCount+1) == '?') )
{
    field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
    return true;
}
return false;

} function getTarget(e) { // IE5 if (e.srcElement) { return e.srcElement; } if (e.target) { return e.target; } }

function getKeyCode(e) { //IE5 if (e.srcElement) { return e.keyCode } // NC5 if (e.target) { return e.which } }

function isNumeric(c) { var sNumbers = "01234567890"; if (sNumbers.indexOf(c) == -1) return false; else return true;

}

function isNumeric_plusdash(c) { var sNumbers = "01234567890-"; if (sNumbers.indexOf(c) == -1) return false; else return true;

}

function isAlpha(c) { var lCode = c.charCodeAt(0); if (lCode >= 65 && lCode <= 122 ) { return true; } else return false; }

function isPunct(c) { var lCode = c.charCodeAt(0); if (lCode >= 32 && lCode <= 47 ) { return true; } else return false;

}

答案 1 :(得分:1)

如果这是一个aspx页面,他们可能正在使用AJAX Control Toolkit MaskedEdit Extender。 jQuery还有Masked Input plugin