Как игнорировать скрытые элементы страницы при проверке с использованием jquery.validationEngine.js? - PullRequest
0 голосов
/ 19 ноября 2010

У меня есть div, стиль которого по умолчанию равен «display: none», пока не будет заполнено предыдущее поле, и он содержит раскрывающийся список, который требует выбора.

Если страница отправлена ​​до того, как этот div станет видимым, ошибка проверки появится в левой половине страницы.

Конечно, это не функциональная проблема, но мне было интересно, есть ли способ заставить механизм проверки игнорировать скрытые элементы.

До сих пор я пробовал class = "validate [необязательный: специальный]", как указано в блоге создателя : "необязательный: специальный: проверять только, когда поле не пустое * Пожалуйста, вызывайте необязательный первый". Похоже, это не работает так, как предлагается.

<div id="container" style="display: none;">
   ...
   <select id="mapLocation" onchange="moveMapToCenter();" class="validate[optional: Special]" />
   ...
</div> 

Я также пытался использовать jquery.validate "ignore":

$(document).ready(function() {
   $("#aspnetForm").validationEngine({
      ignore: ":hidden"
      success: false,
      failure: function() {}
   })
});

Это может быть простой недосмотр с моей стороны, посмотрим! Спасибо.

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Я решил эту проблему, добавив и удалив атрибут класса validation [required] через функции, которые скрывают и показывают элемент.

function showContainer() {
   ...
   $("#mapLocation").addClass("validate[required]");
   ...
}
function hideContainer() {
   ...
   $("#mapLocation").removeClass("validate[required]");
}

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

0 голосов
/ 05 декабря 2013

Мне нужно отключить временные дополнительные поля, я делаю это, красивое решение: небольшое расширение jquery:

jQuery.extend(jQuery.fn, {
    switchValidationEngine: function (enable) {
        $.each(this, function (i, n) {
            var field = $(n);
            var rulesParsing = field.attr("class");
            var newVal = enable ? rulesParsing.replace(/validate_not\[/g, "validate[") : rulesParsing.replace(/validate\[/g, "validate_not[");
            field.attr("class", newVal);
        });
    }
});

использование для отключения проверки поля:

$ ( "# txtModel") switchValidationEngine (ложь).

использование для повторного включения проверки поля:

$ ( "# txtModel") switchValidationEngine (истина);.

...