Параметр игнорировать при проверке jquery не работает

#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)";