Исключение некоторого элемента формы из проверки jquery

#jquery #validation

#jquery #проверка

Вопрос:

я использую форму с несколькими элементами текстового поля, которые я хочу проверить, и несколькими, которые я не хочу, я использую jquery .not() для этого, но я не получаю желаемого результата, я делаю какую-то ошибку ayntax или что-то в этом роде вот мой код

 function validateRegisterClick(){
    var isValid = true;
    // Validate User Information.
    $('input[type=text], input[type=password]').not(':input[id$=txtMob], :input[id$=txtOfficeNo]').each(function () {
            if ($(this).val().length <= 0) {
                $(this).next()
                       .fadeIn('slow')
                       .removeClass()
                       .addClass('failure')
                       .fadeIn('slow')
                       .text("Can't be blank.");
                isValid = false;
            }
});
}
  

он также включает в себя txtMob и txtOfficeNo, поскольку я использую внешний файл javascript, поэтому я использую этот синтаксис
—спасибо
Mac

Комментарии:

1. Было бы полезно увидеть форму, а затем понять конечную цель. В то же время селектор, похоже, отформатирован правильно для следующей цели: «Выберите все входные данные типа text или введите password, если в их идентификаторах нет текста ‘txtMob’ или’txtOfficeNo'». Если это то, для чего предназначен селектор (упрощенная демонстрация: jsfiddle.net/hueaM ), все в порядке, и проблема кроется в другом месте кода.

2. я отладил свой скрипт и проверил идентификатор на случай, когда он возвращает ‘isValid = false’, а идентификатор, который я получил, — ‘ContentPlaceHolder1_txtMob’ и ‘ContentPlaceHolder1_txtOfficeNo’

3. Это точно соответствует тому, как я интерпретировал ваш селектор. В чем проблема? Примечание: вы изобретаете колесо, которое не нужно изобретать. Официальный плагин проверки jQuery отлично работает и имеет любой простой API.

Ответ №1:

изменение строки в моем приведенном выше коде решает проблему:

 $('input[type=text], input[type=password]').not(':input[type=text][id$=txtMob], :input[type=text][id$=txtOfficeNo]').each(function ()
  

Ответ №2:

Исключите идентификаторы с помощью —

 $('input').not('input[id$=txtMob], input[id$=txtOfficeNo]').each(function () {
    alert($(this).attr('id'));
});
  

Комментарии:

1. Это не исключает совпадения подстрок, что, я полагаю, он и намеревается сделать.

2. я использую внешний js-файл, и страница также содержит главную страницу. мне жаль, что я не упомянул об этом, поэтому в этом случае я думаю, что #txtMob и #txtOfficeno не будут работать

3. Я не понимаю, какое отношение к этому имеют «внешний js» и «главная страница». Тот факт, что JS или ‘include’ являются частью вашего уравнения, не должен иметь значения.

4. @Greg на самом деле при использовании основных страниц в asp.net это добавляет некоторые дополнительные элементы к каждому идентификатору элемента, поэтому, если мы получим доступ к этому элементу с тем же идентификатором, который мы определяем, это приведет к ошибке, поэтому, если мы используем внутренний файл javascript, который находится внутри нашей страницы в разделе head, мы должны использовать что-то вроде <%=buttonXXX. ClientID%> в то время как во внешнем файле javascript это не будет работать, поэтому мы должны использовать что-то вроде ‘$(«input [id $ =’txtBoxPasswrd’]»)’

5. Итак, согласно моему первому комментарию, тогда. 😉 Однако дело не в том, что JS является внешним или что у вас есть главная страница. Это случайное совпадение; проблема просто в том, что вам нужно соответствие подстроки для автоматически сгенерированных идентификаторов.