Подскажите что это такое, и как 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>