Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我两个都收到了$jQval是未定义的;及"元。validator.unobtrusive未定义“;当使用RequireJS时?_Javascript_Jquery_Validation_Requirejs_Unobtrusive - Fatal编程技术网

Javascript 为什么我两个都收到了$jQval是未定义的;及"元。validator.unobtrusive未定义“;当使用RequireJS时?

Javascript 为什么我两个都收到了$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: {

这让我困惑了几个小时。当脚本位于非requirejs javascript文件中时,它可以正常工作。当我将它与RequireJS一起使用时,它无法工作,并在问题标题中给出错误消息(通过firebug控制台)

在尝试重构成模块之前,我只是想让它与RequireJS“协同工作”

Html正在正确呈现。脚本正在正确加载。另外,我正在使用require-jquery.js包下载,它在所有页面的布局模板中都被引用

main.js

最大文件大小.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;
        }, '');
});

这在#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");