jQuery.validate игнорирует мои объявления правил - PullRequest
2 голосов
/ 01 декабря 2011

У меня есть очень простая контактная форма с полями, подобными этим:

<label>
    First Name<em>*</em>
    @Html.TextBox("txtFirstName", null, new { tabindex = "1"})
</label>

Я хочу, чтобы это поле было обязательным, поэтому я добавил некоторый код в готовый документ:

$(function(){
    $("#contactForm").validate({
        rules: {
            txtFirstName: { required: true}
            /* also tried this */
            txtFirstName: "required"
        }
    });
});

Тем не менее, в данный момент поле не требуется.Что кажется сумасшедшим, так это то, что если я добавлю «обязательный» атрибут класса, например, так:

@Html.TextBox("txtFirstName", null, new { tabindex = "1", @class="required"})

Он будет проверен, но мне нужны более сложные правила, чем просто необходимые.Мне нужно проверить, что определенные опции выбраны в списке выбора, тогда определенные поля должны или не должны быть обязательными.

1 Ответ

3 голосов
/ 01 декабря 2011

Я подозреваю, что вы включили скрипт jquery.validate.unobtrusive.js на свою страницу.Этот скрипт регистрирует свой собственный обработчик .validate в форме, который явно конфликтует с вашим.Сценарий jquery.validate.unobtrusive.js используется, когда у вас есть модель представления, украшенная аннотациями данных для выполнения проверки, и эти аннотации данных преобразуются в атрибуты данных data5 * HTML5 в сгенерированных полях ввода.Эти атрибуты HTML5 data- * затем интерпретируются скриптом jquery.validate.unobtrusive.js, который регистрирует обработчик .validate в форме.

Если вы хотите определить свои собственные правила проверки и зарегистрировать пользовательские правила .validate, вам придется сделать это вручную (как вы это сделали) и удалить все следы встроенного ненавязчивого сценария проверки с этой страницы..

Причина, по которой проверка работает при добавлении атрибута class="required" в поле ввода, заключается в том, что jquery.validate.unobtrusive.js выбирает его и включает в свои правила при настройке плагина путем регистрации .validate метод в форме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...