Шаблон для этого, который я использовал в течение долгого времени и хорошо мне служил, заключает в себе элемент управления 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?) Как насчет переключателей, как вы их проверяете?
Большинство проверочных решений также предоставляют сахар, такой как проверка правильных данных (скажем, адресов электронной почты), а не просто проверка их наличия.