0

これは私を数時間困惑させました。スクリプトがrequirejs以外のjavascriptファイルにある場合は、正常に機能します。RequireJSで使用すると、機能せず、質問のタイトルにエラーメッセージが表示されます(ただし、firebugコンソール)。

モジュールにリファクタリングする前に、RequireJSで「動作」させようとしていました。

HTMLは正しくレンダリングされています。スクリプトは正しく読み込まれています。また、require-jquery.jsバンドルのダウンロードを使用しています。これは、すべてのページのレイアウトテンプレートで参照されています。

main.js

require.config({
   paths: {
       "maximum-filesize": "modules/validation/maximum-filesize"
   }
});

require(["maximum-filesize", "domReady!"], function (maxFileSize) {
});

maximum-filesize.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が機能しています。

4

1 に答える 1

2

require shimオプションを使用して、jqueryが検証する前にrequiresにjqueryをロードするように指示する必要があります。それ以外の場合、ロード順序は定義されていません。

もう1つの考えられる問題は、requirejs.configを2回呼び出すことです。Requirejsに構成のマージに問題があります

于 2012-08-19T10:59:49.450 に答える