Это что-то странное. На SO есть много вопросов относительно установки свойства ignore
для объекта settings
ненавязчивой проверки.Ненавязчивая настройка «игнорировать» не работает
Сценарий: У меня есть таблица, созданная путем итерации по модели в MVC, и я автоматически заполняю пустую строку внизу, вставляя пустую модель со стороны сервера (это часть требований, не подлежащая обсуждению) , Я не хочу проверять эту пустую строку, если пользователь ее не коснулся, но если есть.
Чтобы решить эту проблему, я генерирую таблицу как обычно. Используя jquery, я автоматически отмечаю любые пустые строки классом «blank». Я вижу, что это происходит только для пустых строк в таблице, просматривая источник.
Теперь, если в обращении document.read() к клиенту у меня есть;
$.validator.unobtrusive.parse('form');
var form = $('form').get(0);
var settings = $.data(form, 'validator').settings;
settings.ignore = ':hidden,.blank';
Это работает просто отлично. Нажатие submit не запускает проверку на пустые строки, даже когда я добавляю новые. Однако валидация не выполняется ни в одной из заполненных строк, кроме первой строки.
Чтобы решить эту проблему, я создал функцию reattachValidation()
, которая вызывается всякий раз, когда я добавляю новую строку, чтобы проверка активировала новые строки. Код был изменен:
function reattachValidation() {
var forms = $('form');
forms.removeData('validator');
forms.removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');
var form = $('form').get(0);
var settings = $.data(form, 'validator').settings;
settings.ignore = ':hidden,.blank';
}
Теперь приведенный выше код будет проверять любые новые строки динамически добавленные в таблицу, но будет также проверить пустые строки, которые все еще имеют класс «пустой» на соответствующих элементов. Поэтому я могу либо не проверять пустые строки, ни новые строки ИЛИ я могу проверить все строки, включая те, у которых есть теги с тегами «blank».
Как игнорировать пустые строки, а также проверять новые строки с данными пользователя?