0

Всем привет. Есть вот этот и этот плагин.

Сама форма имеет такой вид.

 <center>
<form id="loginform" action="" method="post">
Ваш логин:

<input type="text" name="login" />

Ваш телефон:

<input type="text" name="pswd" id="phone"/>

<input type="submit" name="enter" value="Войти" /></form>
</center>

<script>
$("#phone").inputmask("(999) 999-99-99");
</script>

Содержимое myscripts.js

$(document).ready(function(){

    $("#loginform").validate({

       rules:{

            login:{
                required: true,
                minlength: 2,
                maxlength: 16,
            },

            pswd:{
                required: true,
                minlength: 10,
                maxlength: 10,
            },
       },

       messages:{

            login:{
                required: "Это поле обязательно для заполнения",
                minlength: "Имя должно быть минимум из 2 символов",
                maxlength: "Максимальное число символо - 16",
            },

            pswd:{
                required: "Это поле обязательно для заполнения",
                minlength: "Телефон должен состоять из 10 цифр",
                maxlength: "Телефон должен состоять из 10 цифр",
            },

       }

    });

}); //end of ready

Сама проблема: Второе поле имеет маску, если оно пустое, то скрипт проверки говорит, что заполнено, и не выдает сообщение об ошибке.

3
  • У плагина с маской есть функция определения незаполненности поля, также у Validate можно написать кастомные ошибки, если эти две вещи скрестить, то можно дописать свою ошибку для поля, которая будет учитывать заполнено ли поле маски или нет. Например, можно взять параметр, который по дефолту false и если поле не заполнено, то оставлять его false и в кастомной ошибке Validate проверять этой параметр и если false - выдавать ошибку.
    – MasterAlex
    27 янв 2015 в 16:12
  • Наверно, я не понял, но вы предлагаете воспользоваться проверкой от самой же маски? А от валидатора проверять только первое поле?
    – malcov
    27 янв 2015 в 17:10
  • можно пример?
    – malcov
    27 янв 2015 в 17:17

1 ответ 1

1

Сделал пример с вашими плагинами и сообщение об ошибке нормально отображается, если поле пустое.

Поставьте себе эти же версии файлов и jQuery версии не меньше 1.9.1.

UPD

Чтобы плагин Validate нормально обрабатывал маску, нужно учитывать количество всех символов в поле телефона, а их там 15, а значит:

 minlength: 15,
 maxlength: 15,
4
  • Попробуйте ввести номер, и отправить - не отправляет, выдает ошибку
    – malcov
    29 янв 2015 в 15:26
  • @malcov, теперь понятна суть проблемы, символов-то в поле становится 15, [вот так работает][1]. [1]:jsfiddle.net/MasterAlex/0r5ced2k/2
    – MasterAlex
    29 янв 2015 в 15:37
  • Вставил minlength: 15, maxlength: 15,, ввел всего 1 цифру - и у меня отправилась форма.
    – malcov
    29 янв 2015 в 16:10
  • Может кто помочь?
    – malcov
    2 фев 2015 в 3:01

Ваш ответ

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge you have read our privacy policy.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками или задайте свой вопрос.