Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление знаков в номер телефона (https://javascript.ru/forum/misc/47036-dobavlenie-znakov-v-nomer-telefona.html)

tai 06.05.2014 11:47

Добавление знаков в номер телефона
 
Добрый день!

Подскажите пожалуйста можно ли сделать автоматическое добавление знаков в номере телефона?

Т.е. например я ввожу номер из 10 цифр (9041112233)
и в поле должно автоматически подставиться +7(904)111-22-33

nice_try 06.05.2014 11:50

есть плагин
http://digitalbush.com/projects/masked-input-plugin/

jsnb 06.05.2014 13:12

Сработает при снятии фокуса с поля.
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  </head>
  <body>
<input type="text" id="someid">
<script>
document.getElementById('someid').onchange = function() {
  if ( /^\d{3}\d{3}\d{2}\d{2}$/.exec(this.value) ) {
    this.value = this.value.replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, function(str, aaa, bbb, cc, dd) {
      return '+7(' + aaa + ')' + bbb + '-' + cc + '-' + dd;
    });
  }
}
</script>
  </body>
</html>

nice_try 06.05.2014 13:28

Цитата:

Сообщение от jsnb (Сообщение 310591)
Сработает при снятии фокуса с поля.

не робит что то

jsnb 06.05.2014 13:49

Цитата:

Сообщение от nice_try (Сообщение 310593)
не робит что то

http://i.imgur.com/j1m85VF.gif

рони 06.05.2014 16:38

Вариант маски для ввода номера телефона :write:
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
    <input oninput="proverka(this)" onfocus="setCursorPosition(3, this)" >
    <script>
function setCursorPosition(pos, elem) {
        elem.focus();
        if (elem.setSelectionRange) {
            elem.setSelectionRange(pos, pos);
        } else if (elem.createTextRange) {
            var range = elem.createTextRange();
            range.collapse(true);
            range.moveEnd('character', pos);
            range.moveStart('character', pos);
            range.select();
        }
    }

    function proverka(el) {
        var matrix = "+7(123)456-78-90",
            i = 0,
            val = el.value.replace(/\D/g, '');
            !val && (val = "7")
        matrix = matrix.replace(/\d/g, function (a) {
            return val.charAt(i++) || "_"
        })
        el.value = matrix;
        i = matrix.lastIndexOf(val.substr(-1));
        i < matrix.length && i > 2 ? i++ : (i = 3)
        setCursorPosition(i, el)
    };
   document.querySelector('input').oninput()
  </script>
</body>

</html>

devote 06.05.2014 16:46

alert("9041112233".replace(/^(\d{3})(\d{3})(\d{2})(\d{2})$/, '+7($1)$2-$3-$4'));

tai 07.05.2014 10:19

Спасибо!

А как это значение в value передать?
Я проверку делаю на заполненность поля и получается что в value пусто и форма соответственно не отправляется


Часовой пояс GMT +3, время: 20:26.