вместо функций используйте замыкания.
как то так
var Valid = (function () {
//import dom
var Rule = {
required: function (string) {
if (string.length > 0) {
return true;
}
return false;
},
min: function (string, count) {
if (string.length > count) {
return true;
}
return false;
},
max: function (string, count) {
console.info(count);
console.info(string.length);
if (string.length <= count) {
return true;
}
return false;
},
email: function (string){
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(string);
}
};
var cc = function (string, rule, id, message, template) {
var rules = rule.split("|");
for (var i = 0; i < rules.length; i++) {
if (Rule[rules[i]] === undefined) {
var rulesP = rules[i].split(":");
if (Rule[rulesP[0]] === undefined) {
console.warn("У валидатора нету правила " + rulesP[0]);
} else {
if (!Rule[rulesP[0]](string, rulesP[1])) {
dom.UpID(id, template[0]+message[rulesP[0]]+template[1]);
return false;
}
}
} else {
if (!Rule[rules[i]](string)) {
dom.UpID(id, template[0]+message[rules[i]]+template[1]);
return false;
}
}
}
return true;
};
return {
Make: function (rule, message, template) {
var key;
for (key in rule) {
var id = key + "_error";
dom.ClearID(id);
//ошибка. Завершаем валидацию.
if (!cc(dom.form.GetInputID(key), rule[key], id, message[key], template)) {
return false;
}
}
return true;
}
};
}());
дабы все рендилось в 1 проход.