Javascript 来自另一个js文件的JQuery验证程序调用函数
我正在使用jqueryvalidator插件Javascript 来自另一个js文件的JQuery验证程序调用函数,javascript,jquery,validation,Javascript,Jquery,Validation,我正在使用jqueryvalidator插件jqueryvalidation,从另一个js文件调用函数时遇到一些问题 在一个名为theme.js的文件中,我有一个调用preload的函数: jQuery(document).ready(function ($) { function loadAnimation() { $("#loader").show().animate({ opacity: 1 }) } });
jqueryvalidation
,从另一个js文件调用函数时遇到一些问题
在一个名为theme.js
的文件中,我有一个调用preload的函数:
jQuery(document).ready(function ($) {
function loadAnimation() {
$("#loader").show().animate({
opacity: 1
})
}
});
我之所以使用函数,是因为我可以从不同的操作和按钮调用函数。现在我想从验证器中调用该函数,但是我得到一个错误:未定义,这是位于另一个文件validator.js
jQuery(document).ready(function ($) {
$( "#createForm" ).validate( {
errorClass: 'text-danger',
rules: {
offers: 'required',
title: 'required',
},
submitHandler: function(form) {
loadAnimation();
form.submit();
},
} );
});
现在表单提交工作,这意味着submitHandler工作,但我得到一个错误loadAnimation()未定义
我确保在
validator.js
之前加载jquery
,theme.js
,因此我可能在这里遗漏了一些东西,但我无法弄清楚如何使loadAnimation()
从submitHandler
函数内部工作。正如评论中指出的,这是一个范围界定问题。为了实现您想要的,您可以在ready函数之外提取函数定义,以便在其他文件中使用它
function loadAnimation() {
$("#loader").show().animate({ opacity: 1 })
}
jQuery(document).ready(function($) {
// code that needs to fire when the page is ready
});
但是这会污染全局名称空间,所以要解决这个问题,您需要考虑从其他模块创建模块和函数。是否在
theme.js
文件的根级别定义了loadAnimation
?如果它在另一个函数或对象中,它将被限定范围。哦,很抱歉,我要纠正这一点。听起来像是一个范围问题-如果是这样,这可能会解决您的问题: