2

我有一个文本框,上面写着“电话:”,因为这里电话号码的标准是 (XXX)-XXX-XXXX 我想要一个 javascript,如果它不是那种格式,它会自动将我的号码转换成那种格式,因此,如果您输入 9993334444 那么它会在我输入 (999)-333-4444 时自动更改它寻找?

4

2 回答 2

2

你想添加一个带有正则表达式的 onkeyup 事件

this.value = this.value.replace(/^\(?([0-9][0-9][0-9]){1}\)?-?([0-9][0-9][0-9][0-9]){1}-?([0-9][0-9][0-9]){1}$/, '($1)-$2-$3');

查看http://jsfiddle.net/R8enX/

/ means start/end a regex string
^ means start of matching string
$ means end of matching string
? means 0 or 1 instances (make braces and dashes optional)
[0-9] means any single digit
(x){1} tags x as an expression that we can reference in the replacement with a $ sign

编辑:意识到我错过了最后一组数字的一个数字,jsfiddle 只能(正确)在最后一组数字中使用 3 个数字

于 2012-05-16T12:11:44.103 回答
0

要在@Andrews 答案的基础上有所建树,您可以通过此方法检查有效的(本地)电话号码。如果数字短于或大于 10 位数字,它将重新折叠为无效数字

-

<input type="text" onBlur="localNumber(this.value)"/>

<div id="output"></div>

-

<script>

var localNumber = function(str){

    repl = str.replace(/^([0-9]{3})([0-9]{3})([0-9]{4})$/, "($1)-$2-$3");
    outp = document.getElementById('output');

    if( repl.match(/\W/) )
    {
        outp.innerHTML = repl;
    }
    else
    {
        outp.innerHTML = 'Invalid number for this region';
    }

}

</script>
于 2012-05-16T12:52:49.453 回答