这让我困惑了几个小时。当脚本位于非requirejs javascript文件中时,它可以正常工作。当我将它与 RequireJS 一起使用时,它无法工作并在问题标题中给我错误消息(尽管是萤火虫控制台)。
在尝试重构为模块之前,我只是想让它与 RequireJS 一起“工作”。
Html 正在正确呈现。脚本加载正确。此外,我正在使用 require-jquery.js 包下载,它在所有页面的布局模板中都被引用。
主.js:
require.config({
paths: {
"maximum-filesize": "modules/validation/maximum-filesize"
}
});
require(["maximum-filesize", "domReady!"], function (maxFileSize) {
});
最大文件大小.js
require.config({
paths: {
"jquery-validate": "libs/jquery/jquery.validate",
"jquery-validate-unobtrusive": "libs/jquery/jquery.validate.unobtrusive"
}
});
define(["jquery", "jquery-validate", "jquery-validate-unobtrusive", "domReady!"], function ($) {
$.validator.unobtrusive.adapters.add(
'filesize', ['maxsize'], function(options) {
options.rules['filesize'] = options.params;
if (options.messages) {
options.messages['filesize'] = options.message;
}
});
$.validator.addMethod('filesize', function (value, element, params) {
if (element.files.length < 1) {
// No files selected
return true;
}
if (!element.files || !element.files[0].size) {
// This browser doesn't support the HTML5 API
return true;
}
return element.files[0].size < params.maxsize;
}, '');
});
编辑 1
我只是尝试注释掉所有上述代码,并用一个简单的替换它:
$('#Name').val("Hello");
这会在#Name 文本框中正确呈现“Hello”,因此 JQuery 正在工作。