我正在尝试验证并使用
返回文本框输入字段var ok = phNum.search(/^\(?\d{3}\D*\d{3}\D*\d{4}$/);
if (ok==0) {
var parts = phNum.match(/^\(?(\d{3})\D*(\d{3})\D*(\d{4})$/);
output.value='('+parts[1]+') '+parts[2]+'-'+parts[3];
}
应该接受:555-555-1234,5555551234,(555)555-1234等,返回 :( 555)555-1234 at This Demo
这是我的代码
<input id='phone'></input>
<script>
$("#phone").on("load change keyup paste", function (e) {
if (e.keyCode == 8) {} else {
var output;
var input = $("#phone").val();
$("#phone").val(output);
var ok = phNum.search(/^\(?\d{3}\D*\d{3}\D*\d{4}$/);
if (ok == 0) {
var parts = phNum.match(/^\(?(\d{3})\D*(\d{3})\D*(\d{4})$/);
output.value = '(' + parts[1] + ') ' + parts[2] + '-' + parts[3];
}
}
});
</script>
但我没有得到结果!能不能让我知道为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:2)
您可以使用regex模式匹配器中构建的浏览器代替javascript:
<input id='phone' pattern="/^\(?\d{3}\D*\d{3}\D*\d{4}$/"></input>
和.....“输出”未定义:
var output;
然后你使用它:
$("#phone").val(output); //What's the value of "output" here? : undefined
另外....如果每次更改其值时都检查输入,则在键入第一个数字时也会检查输入。这与你的正则表达式不匹配,所以它将它删除....
编辑:
检查此代码: http://jsfiddle.net/hza0wex5/5/ 如果输入至少有10个字符,它只会格式化数字