#jquery #validation #jquery-plugins #unobtrusive-validation
#jquery #проверка #jquery-плагины #ненавязчивый-проверка
Вопрос:
Я хочу проверить некоторый скрытый элемент в jquery
<label class="btn col-1" style="padding-right:0px;">
<input id="Cert1" asp-for="Cert1.CertImageFile" onchange="SetImagePath('#CertImage1','#Cert1')" type="file" class="fileInput" accept=".jpg, .jpeg, .png" hidden>
<img src="~/images/browse.png" width="23" />
<small><span asp-validation-for="Cert1.CertImageFile" class="text-danger font-weight-bold"></span></small>
</label>
function validateForm() {
// This function deals with validation of the form fields
var x, y, i, valid = true;
x = document.getElementsByClassName("tab");
y = x[currentTab].querySelectorAll("input,select");
// A loop that checks every input feld in the current tab:
var form = $("#regForm");
for (i = 0; i < y.length; i ) {
// If a field is not valid...
if (!form.validate({
ignore: ':hidden:not(.fileInput)'
}).element(y[i])) {
// add an "invalid" class to the field:
y[i].className = " invalid";
// and set the current valid status to false
valid = false;
}
}
return valid; // return the valid status
}
но опция игнорирования не работает, даже когда я установил ignore: ''
параметр заменить все игнорирование, он по-прежнему не удаляет скрытые поля
Комментарии:
1. Он должен быть инвертирован, .fileInput:not(:hidden), это означает, что он должен просматривать все «.fileInput», которые не являются :hidden
2. Я хочу, чтобы этот ввод файла был проверен,
Ответ №1:
Я обнаружил, что ненавязчивый плагин вызывает validate() при загрузке документа и устанавливает параметры по умолчанию. затем валидатор кэшируется, и любые дальнейшие вызовы для проверки будут игнорировать новые параметры и возвращать кэшированный валидатор
поэтому я добавил эту строку перед проверкой цикла, и она сработала
$("#regForm").validate().settings.ignore = ":hidden:not(.fileInput)";