Плагин проверки jQuery, отображающий «Пожалуйста, введите значение, большее или равное 0».

#javascript #jquery #forms #jquery-validate

#javascript #jquery #формы #jquery-проверка

Вопрос:

Я схожу с ума от этой проблемы, и, похоже, я не могу ее решить. Я использую этот плагин для проверки формы на моем сайте:http://jqueryvalidation.org /

Это мой form :

 <form action="#" method="POST" id="regForm">
        <table>
            <th></th>
            <th>Name</th>
            <th>Email</th>
            <th>Phone</th>
            <? for($i = 1; $i <= $qty; $i  ):?>
            <tr><td>Guest <?= $i?></td>
                <td><input type="text" class="name"  name="name<?= $i ?>" required/></td>
                <td><input type="text" class="email" name="email<?= $i?>"/></td>
                <td><input type="text" class="phone" name="phone<?= $i ?>"/></td>
                <input type="hidden" name="course_id" value="<?= the_ID() ?>"/>
                <input type="hidden" name="course_title" value="<?= $course ?>"/>
                <input type="hidden" name="formSend2" value="1" />
                <input type="hidden" name="course_date" value="<?= $date ?>"/>
                <input type="hidden" name="course_location" value="<?= $location ?>"/>
                <input type="hidden" name="course_applicant" value="<?= $user_ID ?>"/>
            </tr>
            <? endfor; ?>
        </table>
        Will you be attending? (Tick for Yes) <input name="attend_box" type="checkbox" value="yes"/><br/> 
        <input type="submit" value="Confirm Registration"/>
        </form>
  

Это мой script

 $("#regForm").validate();
$.validator.addMethod("cRequired", $.validator.methods.required,"Customer name required");
$.validator.addMethod("cMinlength", $.validator.methods.minlength,
$.validator.format("Customer name must have at least {0} characters"));
$.validator.addClassRules("name", { cRequired: true, cMinlength: 2 });
  

Исходя из вышесказанного, если я попытаюсь отправить свою форму без заполнения поля имени, отображается «Требуется имя клиента«. Это работает.

Если я ввожу только один символ, то отображается «Имя клиента должно содержать не менее 2 символов«. Это работает.

Однако проблема возникает, когда я ввожу 2 или более символов в поле. Я получаю это сообщение об ошибке, отображаемое в поле, и я понятия не имею, почему.

Пожалуйста, введите значение, большее или равное 0.

Я действительно не знаю, что здесь происходит.

Комментарии:

1. Поскольку PHP оценивается на сервере, прежде чем он попадет в JavaScript, пожалуйста, покажите нам только отрисованный HTML, как показано в исходном коде браузера.

Ответ №1:

Ваш код не показывает проблему, которую вы описали:jsfiddle.net/xQdZv

В противном случае обновите свой OP с помощью фактического отображаемого HTML, который отображается в JavaScript.


Нет абсолютно никакой логической причины создавать пользовательские методы, идентичные их аналогам по умолчанию. Вы можете просто безопасно использовать оригинальные версии….

 $(document).ready(function () {

    $("#regForm").validate(); // <- initialize plugin

    // create a new compound rule called "name"
    // assign compound rule using 'class="name"'
    $.validator.addClassRules("name", {  
        required: true,  // <- standard rule
        minlength: 2     // <- standard rule
    });

});
  

Это цель addClassRules() метода; создать составное правило из нескольких стандартных правил, а затем присвоить ему class имя, которое затем используется для объявления нового составного правила в вашем поле.

Ваши пользовательские сообщения могут быть определены встроенно с помощью этих attributes .

Для required :

 data-msg-required="Customer name required"
  

и для minlength :

 data-msg-minlength="Customer name must have at least {0} characters"
  

Визуализированный HTML:

 <input type="text" class="name" name="name1" data-msg-required="Customer name required" data-msg-minlength="Customer name must have at least {0} characters" />
  

Вам также не нужен required атрибут, поскольку вы уже определили required в своем class составном правиле выше.

ДЕМОНСТРАЦИЯ:http://jsfiddle.net/86GL5 /