我有一些验证我在电话号码的表单输入字段中使用。我有两个部分的问题。首先,我不想添加一个左括号。其次,即使我执行退格操作,我仍然要保留括号和破折号。以下是我到目前为止: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" />
答案 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的情况下消失的左括号。)