Автоматический формат номера телефона в JQuery

У меня есть одно текстовое поле для номера телефона. Мой номер телефона должен быть XXX-XXX-XXX, как этот формат.

Я получил решение для формата XXX-XXX-XXX, но я не знаю, как изменить этот код.

$('#ssn').keyup(function() {
    var val = this.value.replace(/\D/g, '');
    var newVal = '';
    while (val.length > 3) {
      newVal += val.substr(0, 3) + '-';
      val = val.substr(3);
    }
    newVal += val;
    this.value = newVal;
});

http://jsfiddle.net/ssthil/nY2QT/

Ответ 1

Поскольку вы используете jQuery, вы можете попробовать jquery masked-input-plugin.

Там jsFiddle для вас здесь, где вы можете увидеть, как это работает.

Исходный код проекта на GitHub можно найти здесь.

Реализация более чем простая:

HTML:

<input id="ssn"/>

JavaScript:

$("#ssn").mask("999-999-999");

ОБНОВЛЕНИЕ:

Еще один хороший один можно найти здесь.

Ответ 2

Насколько я могу судить, все, что вам действительно нужно сделать, это:

$('#ssn').keyup(function()
{
    this.value = this.value.replace(/(\d{3})\-?/g,'$1-');
});

но это будет работать только тогда, когда люди вводят цифры, поэтому я предлагаю ввести дополнительную проверку:

$('#ssn').keyup(function(e) {
  if ((e.keyCode > 47 && e.keyCode < 58) || (e.keyCode < 106 && e.keyCode > 95)) {
    this.value = this.value.replace(/(\d{3})\-?/g, '$1-');
    return true;
  }
  
  //remove all chars, except dash and digits
  this.value = this.value.replace(/[^\-0-9]/g, '');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text" id="ssn">

Ответ 3

$('#ssn').keyup(function() {
        var val = this.value.replace(/\D/g, '');
        var newVal = '';
        for(i=0;i<2;i++){
         if (val.length > 3) {
          newVal += val.substr(0, 3) + '-';
          val = val.substr(3);
        }
        }
        newVal += val;
        this.value = newVal;
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="ssn" maxlength="10"/>

Ответ 4

Вы можете установить маску ввода в любом поле тремя простыми шагами:

1: Прежде всего вызовите эти библиотеки http://code.jquery.com/jquery-1.7.2.min.js "" https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.js "

2: Создайте простую форму следующим образом:

<form> <input type="text" name="phone" id="phone" /> </form>

3: Затем код сценария прошёл в ваш тег скрипта.

$ (document).ready(function ($) {

$('#phone').mask("99999-9999999-9",{placeholder:""});

});