Проверка архаичной формы - PullRequest
1 голос
/ 28 января 2011

У меня есть форма, и я, к сожалению, построил ее без помощи внешних библиотек (которые я сейчас проклинаю за то, что не включил).Поэтому моя проверка формы - это не просто form.validate () или что-то подобное, это должен быть архаичный метод javascript (временные ограничения означают, что я не могу реализовать внешние библиотеки, потому что это потребует перестройки формы).1002 * Все, что я хочу, это проверить, все ли поля были заполнены - без проверки адреса электронной почты или почтового индекса и т.д.не работаетАльтернативой этому может быть вложение 45, если операторы обнаруживают каждое поле по отдельности, но это утомительно и неосуществимо.

Ответы [ 3 ]

4 голосов
/ 28 января 2011

Вы можете зациклить элементы желоба в форме с

document.forms[0].elements

, например,

 var d = document.forms[0].elements
 var l = d.length;
 for(var i = 0; i < l; i ++) {
     var element = d[i];
     var type = element.type;
     var value = element.value;
     var class = element.className;
 }

, раскрывающимися:

document.forms[0].select.value

радиокнопками:

for (i=0;i<document.forms[0].radios.length;i++) {
    if (document.forms[0].radios[i].checked) {
        var value = document.forms[0].radios[i].value;
    }
}

благодаря внешним библиотекам нам не нужно делать это в наши дни ;)

2 голосов
/ 28 января 2011

Я думаю, что ответ Каспара превосходен.В дополнение к этому мы имеем в старых формах функцию для получения элементов по имени класса (не написано нами):

function getElementsByClassName(className, tag, elm){
    var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];
    var current;
    var length = elements.length;
    for(var i=0; i<length; i++){
            current = elements[i];
            if(testClass.test(current.className)){
                    returnElements.push(current);
            }
    }
    return returnElements;
}

Затем мы помещаем class = "validate" в каждый элемент формыкоторая требует проверки и запускает эту функцию при отправке формы (где getFormElementValue - это функция, которая обрабатывает различные элементы формы, как в ответе Каспара):

function validate(){
    var elementArray = ( getElementsByClassName('validate') ) ;
    for ( i=0; i<elementArray.length;  i++){
        if( getFormElementValue( elementArray[i] ) == '' ){
            alert( 'Form not OK' );
            return false;
        }
    }
}

Приятно, что вы можете легко определитькакие элементы являются обязательными, а какие нет, не прибегая к списку имен / идентификаторов.

2 голосов
/ 28 января 2011

Ваша логическая логика неверна - вы хотите И (&&), а не ИЛИ (||), если хотите заполнить все обязательные поля.В настоящее время проверка только проверяет, заполнено ли одно поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...