Здравствуйте. Подскажите пожалуйста.
Есть код, который проверяет поле формы, который находится в контроллере.
var exports = this;
jQuery(function ($) {
exports.RegistrationForm = Controller.create({
elements: {
"input[name='email']" : "emailInput",
"form" : "registrationForm"
},
init: function (element) {
this.el = $(element);
this.refreshElements();
this.registrationForm.submit(this.proxy(this.email));
},
email: function () {
//alert("Searching: " + this.emailInput.val());
this.email = this.emailInput.val();
this.get_validator(this.email);
return false;
},
$: function (selector) {
return $(selector, this.el)
},
refreshElements: function () {
for (var key in this.elements)
{
this[this.elements[key]] = this.$(key);
}
},
get_validator: function (values) {
var validator = {
types: {},
messages: [],
config: {},
validate: function (data) {
var i, msg, type, checker, result_ok;
this.messages = [];
for (i in data)
{
if (data.hasOwnProperty(i))
{
type = this.config[i];
checker = this.types[type];
if (!type) {
continue; // no need to validate
}
if (!checker) {
throw {
name:"ValidationError",
message:"No handler to validate type " + type
};
}
result_ok = checker.validate(data[i]); // ВОТ ЭТА ФУНКЦИЯ НЕ ОТРАБАТЫВАЕТ!!!
if (!result_ok) {
msg = "Invalid value for *" + i + "*, " + checker.instructions;
this.messages.push(msg);
}
}
}
return this.hasErrors();
},
// helper
hasErrors:function () {
return this.messages.length !== 0;
}
};
validator.types.isNonEmpty = {
validate: function (values) {
return value !== "";
},
instructions: "The value cannot be empty"
};
var data = {
//email: values
email: "Super"
};
validator.config = {
email: "isNonEmpty"
};
validator.validate(data);
if (validator.hasErrors())
alert(validator.messages.join("\n"));
}
});
new RegistrationForm('#registration_block');
});
Код работает. кроме одной строчки, в которой я добавил комментарий. Почему я не могу вызвать функцию, в которой нахожусь? Если код отделить от контроллера, и создать отдельный объект validate, то все работает супер! Подскажите пожалуйста, срочно нужна помощь!
Спасибо огромное!