#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 /