Я делаю некоторую простую проверку на стороне клиента с помощью jQuery.
var passedValidation = new Boolean(true);
// Required Field Validators.
if ($('#fbsignup input.firstName').val().trim() == '') {
$('#fbsignup tr.firstName em').show();
passedValidation = false;
}
if ($('#fbsignup input.lastName').val().trim() == '') {
$('#fbsignup tr.lastName em').show();
passedValidation = false;
}
if ($('#fbsignup input.email').val().trim() == '') {
$('#fbsignup tr.email em').show();
passedValidation = false;
}
if ($('#fbsignup input.password').val().trim() == '') {
$('#fbsignup tr.password em').show();
passedValidation = false;
}
if ($('#fbsignup input.screenName').val().trim() == '') {
$('#fbsignup tr.screenName em').show();
passedValidation = false;
}
if (passedValidation == true) {
// All validation passed. Hide the modal signup dialog and post back to signup user.
$('#fbcSignupModal').jqmHide();
return true;
} else {
return false;
}
По сути, я хочу убедиться, что все поля заполнены. Если нет, верните false, иначе верните true.Простой.
Может ли это быть реорганизовано в одну строку?(возможно, применяя класс ко всем элементам?).
Предостережение в ответе, я НЕ хочу использовать плагин jquery-validate.Я знаю, это круто, но это не очень сложная проверка, и я не хочу влиять на остальную часть формы (это модальное всплывающее окно).
Итак, как говорится, есть идеи?
РЕДАКТИРОВАТЬ
Просто чтобы уточнить, мне нужно знать , какое поле не заполнено, поэтому я могу показать * рядом с ним.
EDIT2
Обновлен исходный код, чтобы указать, что мне нужно показать обязательную метку поля и вернуть false в случае сбоя проверки.
EDIT3
Хорошо, я переосмыслил свое решение, и, похоже, мне нужно будет выполнить серверный вызов, чтобы проверить электронную почту по схеме членства.Так что я, вероятно, собираюсь в конечном итоге либо обернуть поля в панели обновления, либо сделать пост веб-службы (и вернуть ошибки в массиве json).Тем не менее, я оставлю этот вопрос открытым на некоторое время и выберу ответ с наибольшим количеством голосов.
ОТВЕТ
Итак, я перешел к модифицированной версииответ @ box9.Мне все еще нужно будет выполнить AJAX-вызов на сервер для проверки электронной почты (как подсказывает мое редактирование выше), но это гарантирует, что я сделаю это, только если все поля заполнены.
$('#fbsignup input.required').each(function (index) {
if ($(this).val().trim() == '') {
$(this).next('em').show();
passedValidation = false;
}
});
IУ меня есть элемент em непосредственно после обязательных полей ввода, поэтому я могу легко использовать селектор .next([selector])
jQuery.
Приятно и просто.
Спасибо всемответы.