#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 является внешним или что у вас есть главная страница. Это случайное совпадение; проблема просто в том, что вам нужно соответствие подстроки для автоматически сгенерированных идентификаторов.