Почему не работает функция? Редактировать 
		
		
		
		Здравствуйте. Подскажите пожалуйста. 
	Есть код, который проверяет поле формы, который находится в контроллере. 
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, то все работает супер! Подскажите пожалуйста, срочно нужна помощь! Спасибо огромное!  | 
	
		
 а что именно происходит, говорит что нет такой функции или не доходит до нее? 
	 | 
	
		
 вместо checker.validate(data[i]) попробуй this.validate(data[i]) сделать 
	 | 
	
		
 Консоль ничего не выводит! Код доходит до этой строчки и дальше не срабатывает, а если это строчку закомментировать, то код продолжает работать дальше. 
	Этим способом тоже делал, - результат прежний...  | 
	
		
 попробуй через родителя вызвать 
	 | 
	
		
 Тоже самое.. 
	 | 
	
		
 т.е. validator.validate(data[i]); так тоже не канает? 
	 | 
	
		
 Так работает, но мне нужно вызывать через checker.validate(data[i]) 
	 | 
	
		
 Цитата: 
	
  | 
	
		
 у вас где то синтаксическая ошибка появляется может переменная какая отваливается, может еще что то, когда код начинает по вашему методу отрабатывает, попробуйте алерты в for понатыкать и вычислить момент когда отваливается скрипт 
	 | 
	
		
 Я это все делал, если закомментировать злополучную строчку, то все отрабатывает, если не комментировать ее, то все алерты отрабатывают до нее, а после нет. 
	Если вывести эту строку в console.log() то ничего не выводится ВОООБЩЕ  | 
	
		
 че то я не понял как вы пытаетесь вызвать checker.instructions, если у него этого св-ва нет?надо так наверно checker.isNonEmpty.instructions ? 
	 | 
	
		
 и checker.isNonEmpty.validate(data[i]); так вызвать попробуйте 
	 | 
	
		
 Все сделал! 
	 | 
	
		
 а гоню не заметил type,  type проверяли?правильный выдает? 
	 | 
	
		
 что было? 
	 | 
	
		
 честно сказать,  - сам не знаю... кучу раз переделал, и в итоге заработало. 
	Сам запутался... :blink:  | 
| Часовой пояс GMT +3, время: 12:32. |