我对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'
有人有任何想法吗?或者更好的方法可以做到这一点?
答案 0 :(得分:1)
在a.html中,您需要像这样调用您的函数:
(function(){
INSTANTFEEDBACKVALIDATE.validate = function(){
// validation code
}
})();
注意'();'在末尾。如果没有这个,你只是声明函数而不是调用它。