|
|
|
| Подскажите пожалуйста как организовать проверку радиокнопок...я проверяю все текстовые поля вот как то так:
function checkForm(form) {
// Заранее объявим необходимые переменные
var el, // Сам элемент
elName, // Имя элемента формы
value, // Значение
type; // Атрибут type для input-ов
// Массив списка ошибок, по дефолту пустой
var errorList = [];
// Хэш с текстом ошибок (ключ - ID ошибки)
var errorText = {
1 : "Не заполнено поле 'Улица'",
2 : "Не заполнено поле 'Дом'",
3 : "Не выбрана услуга",
// 4 : "Не оставлен комментарий",
5 : "Не выбрана улица"
}
// Получаем семейство всех элементов формы
// Проходимся по ним в цикле
for (var i = 0; i < form.elements.length; i++) {
el = form.elements[i];
elName = el.nodeName.toLowerCase();
value = el.value;
if (elName == "input") { // INPUT
// Определяем тип input-а
type = el.type.toLowerCase();
// Разбираем все инпуты по типам и обрабатываем содержимое
switch (type) {
case "text" :
if (el.name == "ul" && value == "") errorList.push(1);
if (el.name == "dom" && value == "") errorList.push(2);
if (el.name == "fname" && value == "") errorList.push(3);
break;
case "file" :
if (value == "") errorList.push(3);
break;
case "checkbox" :
// Ничего не делаем, хотя можем
break;
case "radio" :
if ((r1[0].checked == false) && (r1[1].checked == false)) errorList.push(3);
break;
default :
// Сюда попадают input-ы, которые не требуют обработки
// type = hidden, submit, button, image
break;
|
| |
|
|
|
|
|
|
|
для: IceDevil
(31.08.2010 в 12:47)
| | Очень нерациональный код.
У Вас всего проверяется: ТРИ поля, набор чекбоксов и набор радиокнопок.
Имена всех этих полей и наборов Вам известны.
Зачем в принципе перебирать ВСЕ элементы формы?
Зачем определять тип, если конкретные элементы вполне можно идентифицировать только по его имени?
Делаете конкретную проверку конкретного элемента и делаете нужные Вам действия в случае ошибки.
Что до проверки чекбоксов, то, УВЕРЕН, визуально они находятся у Вас как-то рядом. Ничего не стоит объединить их в какой-либо тег типа DIV, дать этому тегу ID и потом проверить эти чекбоксы на значение свойства cheсked не как часть коллекции всех элементов формы, а как коллекцию элементов DIV.getElementsByTagName ('INPUT') - как только хотя бы один помечен - значит, ошибки нет, выходите из цикла.
Аналогично можно сделать и с радиокнопками.
Кроме того, существует коллекция getElementsByName (ИМЯ) - подставляете имя набора (радиокнопок или чекбоксов) и перебираете её. | |
|
|
|