Цитата:
|
Цитата:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script> <input type="text"/> <script> $('input').mask('# (999) 999-99-99',{ translation:{ '#':{ pattern:/(7|8)/ } } }); </script> |
Цитата:
|
Цитата:
Самое зло которое бывает, при копировании и вставке номера будет исчезать какая-то цифра, что зачастую даже на крупных порталах, где штат разрабов присутствует. |
а я вот так попробовал:
$("input[name=phone]").mask('+7 (#99) 999-99-99',{ translation:{ '#':{ pattern:/(9)/ } } }); не знаю, лучше так или хуже - но, на первый взгляд, нормально получается... |
Цитата:
Удачи вам в вашем нелегком деле. |
Цитата:
Сейчас почему-то не проверяется количество цифр - т.е. можно ввести неполный номер и он отправится.. |
У вас же есть кнопка «Заказать звонок». После того, как пользователь ввёл номер телефона, предполагается, что он нажмёт на эту кнопку. У вас есть время, чтобы успеть вывести сообщение о том, на какой номер будет совершён вызов. Будет ли?
Вам ни в коем случае нельзя мешать пользователю вводить данные, лучше напишите позднее, что не так с вводом! Пользователь даже может не заметить, что какой-либо символ не был введён! Цитата:
Код:
x (xxx xx)x-xx-xx Местные номера в РФ могут состоять из 5, 6 или 7 цифр, но вам нужно, чтобы посетители вводили номер вместе с кодом местности. Национальный номер состоит из 10 цифр, в который входят код местности (3 цифры) и номер абонента (7 цифр). Цитата:
Цитата:
/^(?<country>\+?7|8|0)?(?<area>\d{3})(?<number>\d{7})$/ Группа area может быть выражена более точно так: /^(?![89]40|97[0-1])(?:[349]\d{2}|8[1-7]\d)$/ https://en.wikipedia.org/wiki/Teleph...bers_in_Russia https://en.wikipedia.org/wiki/List_o..._calling_codes Вот пример целиком... <form method="post"> <input type="tel" autocomplete="tel" name="phone" placeholder="Ваш телефон∗" required> <p class="info"></p> </form> <script> document.addEventListener("input", ({ target }) => { if(target.matches("input[type=tel]")) { const phone = target.value.trim() .replace(/[^\+\d]/g, "") .replace(/(.)\++/g, "$1"); let match, message; if (match = phone.match(/^(\+?7|8|0)?((?![89]40|97[0-1])(?:[349]\d{2}|8[1-7]\d))(\d{7})$/)) { const [, country, area, number] = match; message = ` <p>Мы позвоним вам по номеру +7 (${area}) ${number.replace(/(\d{2})(?=(?:\d{2})+$)/g, "$1-")}</p> <p> <button>Подтвердить</button> <button type="reset">Отменить</button> </p> `; } else { message = "Введён неверный номер!"; } document.querySelector("input[type=tel] + .info").innerHTML = message; target.setCustomValidity(match ? "" : "Введён неверный номер"); } }); </script> Цитата:
Цитата:
Цитата:
Вполне корректными могут быть такие запросы... «9161234567» «916-123-45-67» «8916-1-234-567» «+7 (916) 123-45-67» «Тел.: +79161234567» «позвоните на +79161234567» Во всяком случае формы с побочными эффектами должны, по моему мнению, сообщать, что же в результате произойдёт! P. S. Используйте атрибут autocomplete="tel" и type="tel" дабы пользователям не производить лишних телодвижении на не той клавиатуре. |
Часовой пояс GMT +3, время: 14:15. |