в jQuery проверки - включить проверку на наличие скрытых полей



в новой версии jQuery validation plugin 1.9 по умолчанию проверка скрытых полей игнорируется. Я использую CKEditor для поля ввода textarea, и он скрывает поле и заменяет его iframe. Поле есть, но проверка отключена для скрытых полей. С проверкой плагина версии 1.8.1 все работает так, как ожидалось.



поэтому мой вопрос заключается в том, как включить проверку для скрытых полей с помощью плагина проверки v1.9.



этот параметр не работа:



$.validator.setDefaults({ ignore: '' });
306   8  

8 ответов:

автор плагина говорит, что вы должны использовать "квадратные скобки без кавычек",[]

http://bassistance.de/2011/10/07/release-validation-plugin-1-9-0/

Release: Validation Plugin 1.9.0: "...Еще одно изменение следует внести в настройку форм со скрытыми элементами проще, они теперь игнорируются по умолчанию (опция "игнорировать" имеет "скрытые" теперь по умолчанию). В теории, это может сломать существующий установка. В маловероятном случае, что это действительно так, вы можете исправить это установка для параметра ignore-значения " [] "(квадратные скобки без двойные кавычки.)"

изменить этот параметр для всех форм:

$.validator.setDefaults({ 
    ignore: [],
    // any other default options and/or rules
});

(это не обязательно, что .setDefaults() внутри

это сработало для меня, в течение ASP.NET сайт MVC3, где я оставил фреймворк для настройки ненавязчивой проверки и т. д., в случае, если это кому-то полезно:

$("form").data("validator").settings.ignore = "";

на

 $.validator.setDefaults({ ignore: '' });

не внутри $(document).ready

поэтому я собираюсь пойти немного глубже, чтобы понять, почему это не работает, потому что я тот человек, который не может спать по ночам, не зная ха-ха. Я использую jQuery validate 1.10 и Microsoft jQuery Unobtrusive Validation 2.0.20710.0, который был опубликован 1/29/2013.

Я начал с поиска метода setDefaults в jQuery Validate и нашел его в строке 261 неминифицированного файла. Вся эта функция действительно объединяет ваши настройки json в существующий $.validator.defaults что инициализируются с помощью свойства ignore, которое имеет значение": hidden " вместе с другими значениями по умолчанию, определенными в jQuery Validate. Поэтому на данный момент мы переопределили игнорирование. Теперь давайте посмотрим, где это свойство по умолчанию ссылается на.

когда я проследил через код, чтобы увидеть, где $.validator.defaults ссылается. Я заметил, что это только используется конструктором для валидатора формы, строка 170 в jQuery validate unminified file.

// constructor for validator
$.validator = function( options, form ) {
    this.settings = $.extend( true, {}, $.validator.defaults, options );
    this.currentForm = form;
    this.init();
};

в этот момент a валидатор объединит все настройки по умолчанию, которые были установлены, и присоединит их к валидатору формы. Когда вы смотрите на код, который выполняет проверку, подсветку, подсветку и т. д., Все они используют валидатор.объект настроек для извлечения свойства игнорировать. Поэтому нам нужно убедиться, что если мы должны установить ignore с помощью метода setDefaults, то это должно произойти до $("форма").метод validate() называется.

если вы используете Asp.net MVC и ненавязчивый плагин, тогда вы будете поймите, посмотрев на javascript, что проверка вызывается в документе.готовый. я также назвал мои setDefaults в документе.готовый блок, который будет выполняться после скриптов, jQuery validate и ненавязчивый, потому что я определил эти скрипты в html перед тем, который имеет вызов в нем. Поэтому мой вызов, очевидно, не повлиял на функциональность по умолчанию пропуска скрытых элементов во время проверки. Здесь есть несколько вариантов.

1 - вы могли бы, как указал Хуан Мелладо, иметь вызов вне документа.готов, который будет выполняться, как только скрипт будет загружен. Я не уверен в сроках этого, так как браузеры теперь способны выполнять параллельную загрузку скриптов. Если я просто слишком осторожен, пожалуйста, поправьте меня. Кроме того, есть, вероятно, способы обойти это, но для моих нужд я не пошел по этому пути.

вариант 2a - безопасная ставка в моих глазах - просто заменить $.validator.setDefaults({ ignore: '' }); внутри документа.готовое событие с $("form").data("validator").settings.ignore = "";. Это изменит свойство ignore, которое фактически используется jQuery validate при выполнении каждой проверки ваших элементов для данной формы.

опции 2b - после просмотра кода немного больше вы также можете использовать $("form").validate().settings.ignore = ""; как способ установки свойства игнорировать. Причина в том, что при просмотре функции validate она проверяет, был ли объект validator уже сохранен для формы элемент через

просто добавил ignore: [] на конкретной странице для конкретной формы это решение работало для меня.

$("#form_name").validate({
        ignore: [],
        onkeyup: false,
        rules: {            
        },      
        highlight:false,
    });

Это сработало для меня в течение ASP.NET сайт. Чтобы включить проверку на некоторые скрытые поля используйте этот код

$("form").data("validator").settings.ignore = ":hidden:not(#myitem)";

чтобы включить проверку для всех элементов формы используйте этот $("form").data("validator").settings.ignore = "";

обратите внимание, что использовать их в $(document).ready(function() { })

это работает для меня.

jQuery("#form_name").validate().settings.ignore = "";

просто найдите текст игнорировать:": hidden" в файле проверки jquery и прокомментируйте его. После комментария это никогда не потеряет никаких скрытых элементов для проверки...

спасибо

Comments

    Ничего не найдено.