javascript - 来自另一个 js 文件的 JQuery 验证器调用函数
问题描述
我正在使用 jquery 验证器插件jqueryvalidation
并且在从另一个 js 文件调用函数时遇到一些问题。
在一个文件中,theme.js
我有一个调用预加载器的函数:
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() is not defined
。
我确保 ,jquery
之前theme.js
已加载,validator.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
});
但这会污染全局命名空间,因此要解决这个问题,您需要考虑创建模块并从其他模块导入函数。
推荐阅读
- c# - 如何删除默认的 ASP.NET Core Identity 端点?
- selenium - 虽然 Xpath 可用,但会抛出 element not found 错误
- c# - 如果按钮在列表中,则更改按钮
- csv - sqlite3 导入带有列和行分隔符的 csv
- html - angularjs注入器:location.path的unpr错误
- java - 使用 Jackson 将类似列表的 JSON 对象映射到 Java 列表
- html - 如何在导航上创建平滑过渡
- python - 如何销毁 KeyboardInterrupt 上的所有线程(销毁主应用程序)?
- r - 将参数从用户提供的函数传递到聚合(统计信息)
- javascript - NodeJS 中的 Axios.all 因 404 错误而失败