从.js库中回调网页中的Javascript函数

时间:2014-09-26 23:00:48

标签: javascript jquery

我对Javascript很新,所以请把它当作值得的。

所以,我的代码中有三条验证路径。路径出现在不同的页面上。我的想法是将验证代码放在页面中,并从包含的库中调用它们并对它们进行操作。在页面上,它们都具有相同的命名空间名称和函数名称,因此给了我一些很好的多态性。

因此,在a.html中:

<script>
if(typeof INSTANTFEEDBACKVALIDATE === "undefined") { INSTANTFEEDBACKVALIDATE = {}; }
</script>
<script type="text/javascript" language="javascript" src="/static/js/b.js"></script>
...
$(document).ready(function(){
$('.submit-request').click(function(e){
    e.preventDefault();

    INSTANTFEEDBACK.do_stuff();
    $('#myform').submit();
}
})

然后在b.js:

(function(){

INSTANTFEEDBACK.do_stuff = function(){
    if(INSTANTFEEDBACKVALIDATE.validate()){
        do_shared_valid_stuff();
    } else {
        do_shared_invalid_stuff();
    }
}
})

然后回到a.html:

(function(){

INSTANTFEEDBACKVALIDATE.validate = function(){

    // validation code
}
})

我遇到麻烦的地方正在回来 - 在调用INSTANTFEEDBACKVALIDATE.validate()时,它没有找到INSTANTFEEDBACKVALIDATE全局。或者至少我是如何理解这个消息的:

Uncaught TypeError: Object #<Object> has no method 'validate' 

有人有任何想法吗?或者更好的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

在a.html中,您需要像这样调用您的函数:

   (function(){

        INSTANTFEEDBACKVALIDATE.validate = function(){

        // validation code
        }
    })();

注意'();'在末尾。如果没有这个,你只是声明函数而不是调用它。

相关问题