JQuery - Как динамически добавлять правило проверки - программирование
Подтвердить что ты не робот

JQuery - Как динамически добавлять правило проверки

Я пытаюсь динамически добавить правило проверки некоторых динамических элементов управления:

$("input[id*=Hours]").rules("add", "required");

Однако эта строка дает мне следующую ошибку:

$. data (element.form, "validator" ) имеет значение null

Определение правил статическим способом с помощью функции проверки достоверности. Что я делаю неправильно?

Спасибо, Джастин

4b9b3361

Ответ 1

Вам нужно позвонить .validate(), чтобы добавить правила таким образом:

$("#myForm").validate(); //sets up the validator
$("input[id*=Hours]").rules("add", "required");

Документация .validate() является хорошим справочником, здесь размещена надпись .rules("add", option):

Добавляет указанные правила и возвращает все правила для первого согласованного элемента. Требуется, чтобы родительская форма была проверена, то есть $("form").validate() вызывается первым.

Ответ 2

Чтобы проверить все динамически сгенерированные элементы, можно добавить специальный класс к каждому из этих элементов и использовать каждую функцию(), что-то вроде

$("#DivIdContainer .classToValidate").each(function () {
    $(this).rules('add', {
        required: true
    });
});

Ответ 3

Чтобы убедиться, что вы сначала вызвали $("#myForm").validate();, убедитесь, что ваш динамический элемент управления добавлен в DOM, прежде чем добавлять правила проверки.

Ответ 4

В документации говорится:

Добавляет указанные правила и возвращает все правила для первого совпадающего элемент. Требует, чтобы родительская форма подтверждается, то есть, $( "form" ). validate() вызывается первым.

Вы сделали это? Тип сообщения об ошибке указывает, что вы этого не сделали.

Ответ 5

Если вы хотите, чтобы jquery validate автоматически выбирал проверки для динамически добавленных элементов, вы можете просто удалить и добавить проверку для всей формы, как показано ниже

//remove validations on entire form
$("#yourFormId")
    .removeData("validator")
    .removeData("unobtrusiveValidation");

//Simply add it again
$.validator
    .unobtrusive
    .parse("#yourFormId");