0

MVC 4 アプリケーションを作成しています。jQuery 検証を使用してクライアント側の検証を適用しようとしています。「Uncaught Type Error: Object [Object object] has no method 'validate'」というメッセージが表示され続けます。プロジェクトでスクリプトの代わりに URL リンクを使用してみました。スクリプトを確認しましたが、存在します。パスが正しく指定されていることを確認するために、スクリプトをファイルにドラッグ アンド ドロップしました。他にもたくさんのことを試しましたが、なぜこのエラーが発生するのかわかりません。

レンダリングされたページは次のとおりです。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>Create</title>
<link href="/Content/site.css" rel="stylesheet"/>

<script src="/Scripts/modernizr-2.5.3.js"></script>

</head>
<body>


<h2>Create Question For d</h2>

<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>

<script type="text/javascript"> 
$(document).ready(function () {

    //form validation
    $('#myForm').validate();

    $(':input').rules("add", {
        required: true
    });


    //submit form using jquery
    //$('#myForm').submit(function (event) {

    //    //url-encode the form data
    //    var formData = $(this).serialize();

    //    //post the data to the controller
    //    $.post(
    //        'AddQuestion',
    //        formData
    //        );
    //    event.preventDefault();
    //    handleSuccess();
    //});

    //$(':input').not(':button, :submit, :reset, :hidden').val('');
    //$(':checkbox').attr('checked', false);


    $("input:checkbox").click(function () {
        if ($(this).is(":checked") === true) {
            $('input:checkbox').attr("checked", false);
            $(this).attr("checked", true);
        } else {
            $(this).is(":checked", false);
        }
    });


    //clears form on page load (called from submit function)
    function handleSuccess() {         
        $(':input').not(':button, :submit, :reset, :hidden').val('');
        $(':checkbox').attr('checked', false);
    }
});
</script>


<form action="/Test/AddQuestion" id="myForm" method="post">    <fieldset>
    <legend>Question</legend>
    <!-- input box for question -->
    <input type="text" name="question.query" />

    <h3>Answers</h3>


    <input type="text" name="answer[0].option" /> <input type="checkbox"    name="answer[0].isCorrect" value="true" /> <br />
    <input type="text" name="answer[1].option" /> <input type="checkbox" name="answer[1].isCorrect" value="true"/> <br />
    <input type="text" name="answer[2].option" /> <input type="checkbox" name="answer[2].isCorrect" value="true"/> <br />
    <input type="text" name="answer[3].option" /> <input type="checkbox" name="answer[3].isCorrect" value="true"/> <br />
    <!-- Passes testId & testName to AddQuestion Controller Action -->
    <div>
        <input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." id="test_Id" name="test.Id" type="hidden" value="222" />
        <input id="test_name" name="test.name" type="hidden" value="d" />
    </div>

    <p>
        <input type="submit" value="Add Question to Test" />
    </p>
</fieldset>
</form>
<div>
<a href="/Test">Back to List</a>
</div>


<script src="/Scripts/jquery-1.7.1.js"></script>


</body>
</html>

まだ解決策が見つかりません。タグ src のホストされたリンクを使用してみました。一度に 1 つずつタグを取り出したり、別の順序で配置したり、マスター レイアウト ページに配置したりしてみました...これには本当に困惑しました。確かに、信じられないほど単純なこともあります。

4

1 に答える 1

2

考え出した..ページに2つの同じスクリプトがロードされています..jqueryそしてjquery.min..まったく必要ありません..min.jsをロードするだけで問題ありません..はい、すべてのjsファイルをロードすることを常にお勧めします.オン<head>とインではありません<body>...

<head>
 <meta charset="utf-8" />
 <meta name="viewport" content="width=device-width" />
 <title>Create</title>
 <link href="/Content/site.css" rel="stylesheet"/>

<script src="/Scripts/modernizr-2.5.3.js"></script>
<script src="/Scripts/jquery-1.7.1.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js"></script>
</head>
<body>
..........
于 2013-03-04T06:22:16.337 に答える