Javascript 来自另一个js文件的JQuery验证程序调用函数

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 }) } });

我正在使用jqueryvalidator插件
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
?如果它在另一个函数或对象中,它将被限定范围。哦,很抱歉,我要纠正这一点。听起来像是一个范围问题-如果是这样,这可能会解决您的问题: