Все для создания и продвижения сайтов

Верстка, программирование, SEO

Проверка ввода номера и маска телефона через jquery

10032
Проверка ввода номера и маска телефона через jquery

Часто создавая форму обратной связи на сайте, которая содержит номер телефона, возникает проблема в том, что пользователь может записать в это поле что угодно, к примеру, набор цифр.

И хочется сделать проверку на это поле, чтобы потенциальный клиент вбил действительно свой номер или хотябы в нужном формате.

Рассмотрим, как реализовать такое поле.

Демо Попробуйте ввести и нажать отправить

Добавлена маска по телефону, а также её валидация, при попытки отправить форму, если поле не корректное, то будет ошибка или же пользовать сбросил фокус. Форма отправиться если поле валидное и ошибка пропадёт.

Для реализации нам понадобиться две библиотеки на jquery:

  • jquery.inputmask - для наложение маски телефона
  • jquery-validate - для проверки и валидации поля

Скачать их или подключить можно отсюда:

jquery.inputmask jquery.validate

Сначала подключим jquery и библиотеки:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/jquery.validate.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/5.0.5/jquery.inputmask.min.js"></script>

Теперь добавим форму с полем:

<form class="form-request">
  <label>
    <input 
        type="text" 
        class="phone-field"
        name="phone" 
        placeholder="Номер телефона" 
        data-rule-required="true" 
        data-rule-minlength="10" 
        data-msg="Введите номер телефона"
    />
  </label>
  <div>
    <input type="submit" value="Отправить">
  </div>
</form>

Затем пишем следующий скрипт.

<script type="text/javascript">
    // вешаем маску на телефон
    $('.phone-field').inputmask("+7(999)999-9999");
    
    // добавляем правило для валидации телефона
    jQuery.validator.addMethod("checkMaskPhone", function(value, element) {
        return /\+\d{1}\(\d{3}\)\d{3}-\d{4}/g.test(value); 
    });
    
    // получаем нашу форму по class
    var form = $('.form-request');
    
    // включаем валидацию в форме
    form.validate();
    
    // вешаем валидацию на поле с телефоном по классу
    $.validator.addClassRules({
        'phone-field': {
            checkMaskPhone: true,
        }
    });
    
    // Проверка на валидность формы при отправке, если нужно
    form.submit(function(e){
        e.preventDefault();
        if (form.valid()) {
            alert('Форма отправлена');
        }
        return;
    });
</script>

После этого вы получите поле, которые было приведено выше. Обратите внимание, что вы можете менять формат на любой вам нужный.

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.