Невозможно удалить валидатор и применить новый с помощью плагина валидации jQuery - PullRequest
0 голосов
/ 03 февраля 2012

Я столкнулся с такой проблемой:

Мы используем плагин проверки jquery для выполнения проверок на стороне клиента. Сценарий, используемый для инициализации формы, генерируется динамически. Сама форма также генерируется динамически с использованием jTemplates и json.

Проблема в том, что мне нужно повторно инициализировать валидацию для некоторых элементов ввода и изменить размещение ошибок. Я не смог найти какой-либо метод, который бы заново ввел правила валидации и размещения ошибок в API плагина.

Я пытался сделать что-то вроде этого:

Следующий код выполняется для нескольких объектов. (SomeUniqueValue берется из этих объектов).

//removing old rules.
$("input[value='someUniqueValue']").next('input:text').rules('remove');
//I have a hidden field with unique value and an input after it so the code above is ok.

$("#someForm").validate({
    errorPlacement: function (error, elementToValidate) {
        var $messageElement = $("[id='theExactFieldToValidate'][value='someUniqueValue']");
        //error placement logic
    },
    rules: {
        "theExactFieldToValidate": {
             required: true,
             maxlength: 25
         }
    }
});

Перед каждым входом, который я хочу проверить, у меня есть следующее (я хочу, чтобы сообщения об ошибках отображались в этом диапазоне):

<span id="validate-theExactFieldToValidate" class="hidden" style="display:block" value="someUniqueValue"></span>

после выполнения следующего:

$("input[value='someUniqueValue']").next('input:text').rules('remove');

Элемент теряет свои правила проверки, но если я пытаюсь применить новые правила, ничего не происходит.

$("input[value='someUniqueValue']").next('input:text').rules()

Приведенный выше код просто возвращает пустой объект.

Как изменить логику проверки и размещение ошибок для отдельных входов?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

Вы можете изменить настройки проверки после их создания, как показано ниже:

var validator = $("#someForm").validate({
    errorPlacement: function (error, elementToValidate) {
        var $messageElement = $("[id='theExactFieldToValidate'][value='someUniqueValue']");
        //error placement logic
    },
    rules: {
        "theExactFieldToValidate": {
             required: true,
             maxlength: 25
         }
    }
});

validator.settings.rules.theExactFieldToValidate.required = false;
0 голосов
/ 03 февраля 2012

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

А пока попробуйте!

$("input[value='someUniqueValue']").next('input:text').rules("theExactFieldToValidate",rules)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...