Маска вводя номера телефона на javascript
Пример создания маски ввода номера телефона и код для обработки ввода.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<div class="form__input-wrapper input-phone"> <input name="client_phone" type="phone" class="form__input" placeholder="+7 (999) 999-99-99"> </div> <script> document.addEventListener('DOMContentLoaded', function() { const phoneInput = document.querySelector('input[name="client_phone"]'); phoneInput.addEventListener('input', function(e) { let value = phoneInput.value.replace(/\D/g, ''); // Убираем всё кроме цифр if (value.startsWith('8')) { value = '7' + value.slice(1); // Заменяем 8 на 7 } let formatted = '+7 ('; if (value.length > 1) formatted += value.substring(1, 4); if (value.length >= 4) formatted += ') ' + value.substring(4, 7); if (value.length >= 7) formatted += '-' + value.substring(7, 9); if (value.length >= 9) formatted += '-' + value.substring(9, 11); phoneInput.value = formatted; }); // Чтобы удаление работало адекватно: phoneInput.addEventListener('keydown', function(e) { if (e.key === 'Backspace' && phoneInput.selectionStart === phoneInput.value.length) { let value = phoneInput.value.replace(/\D/g, ''); value = value.slice(0, -1); phoneInput.value = '+7 '; if (value.length > 1) phoneInput.value += '(' + value.substring(1, 4); if (value.length >= 4) phoneInput.value += ') ' + value.substring(4, 7); if (value.length >= 7) phoneInput.value += '-' + value.substring(7, 9); if (value.length >= 9) phoneInput.value += '-' + value.substring(9, 11); e.preventDefault(); } }); }); </script> |

