Javascript 为什么我两个都收到了$jQval是未定义的;及"元。validator.unobtrusive未定义“;当使用RequireJS时?
这让我困惑了几个小时。当脚本位于非requirejs javascript文件中时,它可以正常工作。当我将它与RequireJS一起使用时,它无法工作,并在问题标题中给出错误消息(通过firebug控制台) 在尝试重构成模块之前,我只是想让它与RequireJS“协同工作” Html正在正确呈现。脚本正在正确加载。另外,我正在使用require-jquery.js包下载,它在所有页面的布局模板中都被引用 main.js: 最大文件大小.jsJavascript 为什么我两个都收到了$jQval是未定义的;及"元。validator.unobtrusive未定义“;当使用RequireJS时?,javascript,jquery,validation,requirejs,unobtrusive,Javascript,Jquery,Validation,Requirejs,Unobtrusive,这让我困惑了几个小时。当脚本位于非requirejs javascript文件中时,它可以正常工作。当我将它与RequireJS一起使用时,它无法工作,并在问题标题中给出错误消息(通过firebug控制台) 在尝试重构成模块之前,我只是想让它与RequireJS“协同工作” Html正在正确呈现。脚本正在正确加载。另外,我正在使用require-jquery.js包下载,它在所有页面的布局模板中都被引用 main.js: 最大文件大小.js require.config({ paths: {
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;
}, '');
});
这在#Name文本框中正确地呈现了“Hello”,因此JQuery正在工作。您应该使用requires shim选项在JQuery验证之前告诉requires加载JQuery。否则,加载顺序未定义 另一个可能的问题是调用requirejs.config两次。Requirejs在合并配置时遇到问题
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;
}, '');
});
$('#Name').val("Hello");