jquery电话格式

时间:2015-04-29 03:01:08

标签: javascript jquery

我正在尝试输出用户输入的值1234567890以显示为123-456-7890。使用下面的代码,输出是预期的,但是当您尝试编辑数字时,会出现奇怪的问题。有人可以帮忙。



$("input[type='tel']").keyup(function() {
  if (this.value.length === 10) {
    var number = this.value
    this.value = number.substring(0, 3) + '-' + number.substring(3, 6) + '-' + number.substring(6, 10)
  }
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input class="form-control" placeholder="e.g.: 111-222-3333" type="tel" maxlength="10" />
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

问题是您没有从之前的值中删除“ - ”。因此,当触发keyup事件时,该值具有 - 来自之前的keyup parse事件。

为什么不从字符串中删除“ - ”,然后运行子字符串代码?

看起来像是

$("input[type='tel']").keyup(function() {
  if (this.value.length === 10) {
    var number = this.value.replace('-', '');
    this.value = number.substring(0, 3) + '-' + number.substring(3, 6) + '-' + number.substring(6, 10)
  }
});

答案 1 :(得分:0)

有更简单的方法可以实现这一目标,但我希望这会有所帮助。

$("input[type='tel']").keyup(function() {
  
  
   if (this.value.length == 10) {
       var number = this.value
    this.value = number.substring(0, 3) + '-' + number.substring(3, 6) + '-' + number.substring(6, 10)
    }
    else if (this.value.indexOf('-') >= 0) 
    {   
        if (this.value.length != 12) {
        this.value = this.value.replace( /-/g, '' );
          }
    }
  
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<input class="form-control" placeholder="e.g.: 111-222-3333" type="tel" maxlength="10" />