Образец для этого, который я использовал в течение длительного времени и хорошо зарекомендовал себя, обертывает элемент управления DIV
или P
и маркирует это как требуется.
<div class="form-text required">
<label for="fieldId">Your name</label>
<input type="text" name="fieldName" id="fieldId" value="" />
</div>
Это означает, что я могу выделить необходимые поля для проверки с помощью CSS-селектора.
.required input, .required select
В JQuery, вы можете проверить вход с чем-то вроде этого:
$('form').submit(function(){
var fields = $(this).find('input, textarea, select'); // get all controls
fields.removeClass('invalid'); // remove
var inv = $(this).find('input[value=""], select[value=""]'); // select controls that have no value
if (inv.length > 0) {
inv.addClass('invalid'); // tag wrapper
return false; // stop form from submitting
}
// else we may submit
});
В простом Javascript было бы больше, чем я забочусь, чтобы напечатать, но вдоль линий:
var badfields = [];
var fields = theForm.getElementsByTagName('input');
for (var i=0; i< fields.length; i++) {
if (fields[i] && fields[i].parentNode && fields.value == '' &&
/(^|)required(|$)/.test(fields[i].parentNode.className)) {
badfields.push(fields[i]);
}
}
// badfields.length > 0 == form is invalid
Самое непосредственное преимущество обертывания ярлыка и ввода (и необязательно: текст подсказки, ошибка ...) в качестве элемента управления, установленного таким образом, заключается в том, что вы можете применять стили CSS на входе и метке вместе.
.required input, .required select {
border : 1px solid red;
}
.required label {
color : #800;
}
.invalid input, .invalid select {
background-color : #f88;
}
Я рекомендую использовать готовые решения для вашей формы проверки, как вещи могут быстро добавлять на: Как вы проверки флажков? Могут ли быть установлены флажки? (EULA?) Как насчет переключателей, как вы их проверите?
Большинство решений по валидации также обеспечит сахар, например, проверку правильных данных (например, адресов электронной почты), а не проверку их наличия.
в примере кода, все элементы имеют такое же имя .. поэтому, имея 2 требуемых и 1, кажется, не имеет большого смысла. – scunliffe 2008-12-04 00:30:48