JS手机验证。添加格式

时间:2014-07-22 22:30:46

标签: javascript validation

我有一些验证我在电话号码的表单输入字段中使用。我有两个部分的问题。首先,我不想添加一个左括号。其次,即使我执行退格操作,我仍然要保留括号和破折号。以下是我到目前为止:http://jsfiddle.net/yVdgL/8/

window.mask = function (e,f){
    var len = f.value.length;
    var key = whichKey(e);
    if((key>47 && key<58) || (key>96 && key<105))
    {
        if( len==1 )f.value='('+f.value
        else if(len==3 )f.value=f.value+')'
        else if(len==7 )f.value=f.value+'-'
        else f.value=f.value;
    }
    else{
        f.value = f.value.replace(/[^0-9-]/,'')
        f.value = f.value.replace('--','-')
    }
}

function whichKey(e) {
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    return code
}

<input type="text" name="phone" id="phone" onkeydown="mask(event,this)" onkeyup="mask(event,this)" maxlength="12" />

2 个答案:

答案 0 :(得分:0)

从JavaScript中删除else语句。

更改为:

window.mask = function (e,f){
    var len = f.value.length;
    var key = whichKey(e);
    if((key>47 && key<58) || (key>96 && key<105))
    {
        if( len==1 )f.value='('+f.value
        else if(len==3 )f.value=f.value+')'
        else if(len==7 )f.value=f.value+'-'
        else f.value=f.value;
    }
}

function whichKey(e) {
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    return code
}

<强> JSFiddle Demo

答案 1 :(得分:0)

对于任何想知道的人,我通过以下方式工作:1)删除else语句(修复退格问题)和2)将所有><更改为>=<=(这解决了按键为0或9的情况下消失的左括号。)

工作示例:http://jsfiddle.net/yVdgL/21/