无法调用当前对象中的函数。为什么?

时间:2012-11-06 07:45:01

标签: javascript jquery

我有一个名为Validation的函数,它包含三个函数。现在,当我想从Validation内的一个函数调用另一个函数,即在第13行。然后我收到此错误

Uncaught TypeError: Object [object Object] has no method 'validateAddress' 

这是我的代码

var Validation = function () {
var inputs, field, errors = [], self = this,

emptyFieldsValidation = function () {
    $('#form input').each(function (i, el) {
        inputs = $(this);
        if ( inputs.val() == '' ) {
            inputs.css('border', '1px solid red');
            return errors.push('emptyFields');
        } else {
            inputs.css('border', '1px solid #ccc');
            if (inputs.hasClass('from')) {
                if (!self.validateAddress(inputs.val()))
                    errors.push('invalidFromAddress');
            }
            if (inputs.hasClass('to')) {
                if (!self.validateAddress(inputs.val()))
                    errors.push('invalidToAddress');
            }
            if (inputs.hasClass('time')) {
                if (!self.validateForNumber(inputs.val()))
                    errors.push('invalidTime');
            }
        }
    });
    return !!errors.length;
},

validateAddress = function (val) {
    var streetregex = /^[\w+\s]+\d+,\s*[\s\w]+$/;
    if (streetregex.test(val)) return true;
    else return false;
},

validateForNumber = function (val) {
    if (!isNaN(val)) return true;
    else return false;
};

return {
    emptyFieldsValidation: emptyFieldsValidation
};
}

1 个答案:

答案 0 :(得分:3)

self.validateAddress替换为validateAddress

中的emptyFieldsValidation

您可以阅读有关嵌套函数和闭包here的更多信息。