Вызов функции
Подскажите что это такое, и как GLOB передается ?
var validator = (function( GLOB ){ return { В общем работал раньше с формами вот этим валидатором. /** * Объект "validator" * version 1.2 * autor Komarov Artem * site : [url]http://php-zametki.ru[/url] * email: [email]arty-komarov@yandex.ru[/email] */ var validator = (function( GLOB ){ return { // Объект для тестов. Здесь он пустой // Наполняется он в файле validator_tests.js tests : {}, // Контейнер для элементов, которые потребуется сравнивать samples : {}, /** * Метод для валидации формы. * Вешается на обработчик onsubmit * @param object form: Объект html-формы. * @return boolean true|false */ check : function ( form ) { var DOC = GLOB.document, // Зависимость elements = form.elements, // Здесь будут элементы формы elLength = elements.length, // Количество элементы формы require = false, // Флаг: обязательно ли поле curItem = null, // Текущий (для цикла) элемент формы curVal = null, // Текущее (для цикла) значение элемента формы curTest = null, // Текущий (для цикла) класс/тест элемента формы curSample= null, // Текущий элемент сравнения errSpan = null, // Контейнер для ошибок элемента формы tests = new Array(), // Здесь будут классы/тесты элемента формы errors = {}, // Флаг указывает есть ли ошибки prop = null, // Свойство для обхода объекта errors testsLength = 0, // Количество классов/тестов элемента формы outerLoop = null, innerLoop = null, errorLoop = null, i, // Счётчики циклов q; this.samples = {}; outerLoop: for (i = 0; i < elLength; i += 1) { // Получаем текущий элемент: curItem = elements[i]; // Пропускаем элементы не имеющие атрибутов: class и value: if (typeof (curItem.className) === "undefined" || typeof (curItem.value) === "undefined") { continue outerLoop; } // Получаем текущее значение: curVal = curItem.value; // Узнаём обязателен ли текущий элемент: require = (curItem.className.indexOf("require") !== -1); // Пытаемся получить ссылку на элемент-контейнер ошибок: errSpan = DOC.getElementById(curItem.name + "_error"); // Если элемента-контейнера не существует if (!errSpan) { // ... формируем его: errSpan = DOC.createElement("SPAN"); errSpan.id = curItem.name + "_error"; errSpan.className = "error"; // и добавляем его в DOM - древо, // сразу после текущего элемента формы. curItem.parentNode.insertBefore(errSpan, curItem.nextSibling); } // Если текущий элемент не обязателен и не заполнен... if (curVal.length < 1 && !require) { // Очищаем его контейнер, на случай, если он уже содержал текст ошибки, errSpan.textContent = ""; // и пропускаем итерацию цикла. continue outerLoop; } // Получаем имена классов/тестов в массив: tests = curItem.className.split(" "); // Получаем длину массива: testsLength = tests.length; // Проходим по массиву классов/тестов циклом: innerLoop: for (q = 0; q < testsLength; q += 1) { // Получаем текущее имя класса: curTest = tests[q]; // Если текущее имя класса не является тестом... if (!this.tests.hasOwnProperty(curTest)) { // пропускаем итерацию. continue innerLoop; } // Собсна проверка: if (!curVal.match(this.tests[curTest].condition)) { // Устанавливаем флаг для этой ошибки: errors[curItem.name] = true; // Не удачно - пишем ошибку в контейнер: errSpan.textContent = this.tests[curTest].failText; // Останавливаем цикл - вывод остальных ошибок для этого элемента не нужен, // - не зачем пугать пользователя, пусть сначала устранят ту ошибку что есть. break innerLoop; } else { // Снимаем флаг ошибки: errors[curItem.name] = false; // Удачно - очищаем контейнер от содержимого. errSpan.textContent = ""; } // END IF } // END innerLoop // Проверка идентичности значения полей curSample = curItem.className.match(/\bconfirm-?\d{0,}\b/i); if ( curSample !== null ) { // Устанавливаем эталон: if (typeof(this.samples[curSample]) === "undefined"){ this.samples[curSample] = curVal; } else { if (this.samples[curSample] !== curVal) { errors[curItem.name + "_samples"] = true; errSpan.textContent = "Х"; } else { errors[curItem.name + "_samples"] = false; errSpan.textContent = ""; } } } } // END outerLoop /* * Проверяем наличие установленных флагов ошибок. * Если ошибок нет возвращаем true - в этом случае * Обработчик "onsubmit" должен штатно отработать. */ errorLoop: for( prop in errors ) { if ( errors.hasOwnProperty(prop) && errors[prop] === true) { return false; } } return true; } // END CHECK }; }(this)); http://php-zametki.ru/javascript-lab...validator.html а теперь все формы поубирал и пытаюсь вызвать его по кнопке в качестве параметра вместо формы хочу передать var jsonList = document.querySelectorAll('.act'); но пока каша в голове полная. на var Result=validator.check(jsonList); ругается что не понятен ему validator. я так понимаю что параметр GLOB, передается для того что бы знать где создавать, надпись с ошибками, но как он передается ? Раньше запускал его так, как тут туда передается форм ? this? <script type="text/javascript"> document.forms['FormPageOptions'].onsubmit = function(){ var Result=validator.check(this); if(Result==false){ return false; } SavePageOptions(); return false; } </script> |
Тему можно удалить, оказалось чуть выше в листинге script была ошибка из за этого validator не инициализировался, и соответственно не запускался.
|
Часовой пояс GMT +3, время: 12:51. |