Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Дополнительная проверка введения телефона (https://javascript.ru/forum/dom-window/76654-dopolnitelnaya-proverka-vvedeniya-telefona.html)

Igorsrt 30.01.2019 13:00

Дополнительная проверка введения телефона
 
Здравствуйте!
На сайте установлен скрипт mask-input с форматом "+7 (999) 999-99-99", но клиенты все равно уперто вводят свою восьмерку в начало телефонного номера. Можно ли сделать, что бы эта "8" игнорировалась (удалялась), если ее вставляют в начало номера?
<form class="form-send" data-yaid="zakaz_form">
			    <h2>Заказать звонок</h2>
			    <h3>Наш специалист свяжется с вами в ближайшее время</h3>
				<input type="text" name="name" placeholder="Ваше имя*" class="required">
				<input type="text" name="phone" placeholder="Ваш телефон*" class="required">
				<input type="submit" value="Заказать звонок" class="btn" return="" true;"="">
				<input type="hidden" name="form" value="Заказ звонка">
				<label style="display: block;font-size: 12px;text-align: center;margin: 20px 0;" class="accept">
				    <input type="checkbox" name="accept"> 
				    Нажимая на кнопку, вы даете <a target="_blank" href="/docs/policy.pdf">согласие</a> на обработку своих персональных данных
				</label>
			</form>

laimas 30.01.2019 13:58

"Маска телефона II" ? :)

А телефона 8 899 ... не может быть?

Igorsrt 30.01.2019 14:19

мне почему-то кажется, что все телефоны на 9 начинаются... но если не прав, то поправьте. Как тогда быть?

laimas 30.01.2019 14:30

Цитата:

Сообщение от Igorsrt
мне почему-то кажется

Когда кажется, тогда крестятся ;)

http://www.1sn.ru/25874.html

laimas 30.01.2019 14:33

Цитата:

Сообщение от Igorsrt
Как тогда быть

Выбрасывайте плагин, пусть вводят как хотят и как привыкли. Пишите свой обработчик, задача которого просто проверять чтобы было 11 цифр в итоге и в начале 7 (с плюсом или нет, не важно) или 8. А отформатировать телефон при выводе на страницах можно как вашей душе угодно, это не есть проблема.

Nexus 30.01.2019 14:41

Цитата:

Сообщение от laimas
Выбрасывайте плагин, пусть вводят как хотят и как привыкли.

А почему вы не рассматриваете вариант с банальным изменением маски на тот, к примеру, что ниже?
9 (999) 999-99-99

Igorsrt 30.01.2019 14:47

не знаю, мне почему-то идея с удалением восьмерки кажется прикольной (пусть у "горячих линий" телефон на 8 начинается, но с них же обратных звонков не заказывают обычно)...
ну или какой обработчик, что бы он позволял и 10 и 11 цифр ввести

laimas 30.01.2019 14:51

Цитата:

Сообщение от Nexus
А почему вы не рассматриваете вариант с банальным изменением маски на тот, к примеру, что ниже?

Первую серию эпопеи прочтите. :) Насколько можно судить, проблема не в первой цифре маски, которая уже набрана, а в том, что ее вводят в позицию второй цифры. Если плагин маски позволяет вводить все цифры номера, тогда я не понимаю проблемы.

laimas 30.01.2019 15:01

Цитата:

Сообщение от Igorsrt
обработчик, что бы он позволял и 10 и 11 цифр ввести

<input name="phone" />
<script>
document.querySelector('[name="phone"]').addEventListener('input', function() {
    this.value = this.value.trim().replace(/^[^\+78]/, '')
})
</script>


То есть, если первый символ, это не + или 7, или 8, то удаляется. А далее ввод, а вводить кто как любит, кто через пробелы, кто через дефисы, кто со скобками, кто без, них, а проще просто цифры. Перед тем как отправлять форму, это поле можно проверить, удалив из его значения все не цифры - должно быть 11 цифр, иначе генерируем ошибку.

PS. Нет, такой шаблон не пойдет, оно позволяет после + ввести любое, надо подумать.

Dilettante_Pro 30.01.2019 15:10

Цитата:

Сообщение от Igorsrt
пусть у "горячих линий" телефон на 8 начинается

Не только у горячих.
Например, телефонный код Санкт-Петербурга +7 812, Самары +7 846 и т.п.
Или вы предполагаете, что могут указывать только номера сотовых телефонов?


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