Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проверка радиокнопок
 
 автор: IceDevil   (31.08.2010 в 12:47)   письмо автору
 
 

Подскажите пожалуйста как организовать проверку радиокнопок...я проверяю все текстовые поля вот как то так:
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;

  Ответить  
 
 автор: АЯ   (31.08.2010 в 13:39)   письмо автору
 
   для: IceDevil   (31.08.2010 в 12:47)
 

Очень нерациональный код.

У Вас всего проверяется: ТРИ поля, набор чекбоксов и набор радиокнопок.
Имена всех этих полей и наборов Вам известны.
Зачем в принципе перебирать ВСЕ элементы формы?
Зачем определять тип, если конкретные элементы вполне можно идентифицировать только по его имени?

Делаете конкретную проверку конкретного элемента и делаете нужные Вам действия в случае ошибки.

Что до проверки чекбоксов, то, УВЕРЕН, визуально они находятся у Вас как-то рядом. Ничего не стоит объединить их в какой-либо тег типа DIV, дать этому тегу ID и потом проверить эти чекбоксы на значение свойства cheсked не как часть коллекции всех элементов формы, а как коллекцию элементов DIV.getElementsByTagName ('INPUT') - как только хотя бы один помечен - значит, ошибки нет, выходите из цикла.
Аналогично можно сделать и с радиокнопками.

Кроме того, существует коллекция getElementsByName (ИМЯ) - подставляете имя набора (радиокнопок или чекбоксов) и перебираете её.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования