私の MVC4 アプリでは、フォーム内のいくつかのテキスト ボックスに対してクライアント側バリデーターを作成しようとしています。フォームは Register.cshtml ビューに含まれています (このビューは、フォーム認証プロジェクトで新しい MVC4 を作成すると、VS2010 によって自動的に作成されます)。
フォームは [送信] ボタンの検証を既に実装していますが、フォーカスがテキスト ボックスを離れるとすぐに動作するバリデーターが必要です。テキスト ボックスのすぐ横に赤いフォントでインライン エラーが表示されるはずです。正常に検証された場合は、「ok」というメッセージが再び表示されます。
問題: .js バリデーターが機能しません。Firebug さんのコメント:
$document が定義されていません。$document.ready(
また、alert() も試しました。document.ready 関数の外に配置すると、ポップします。中に入ると、ポップしません。registerForm.js のコード:
$document.ready(
function ()
{
$('#registration form').validate
(
{
rules:
{
UserName: { required: true }
},
success: function (label)
{
label.Text('OK!').addClass('IsInputValid');
}
}
)
}
);
この JavaScript を追加するバンドルは次のとおりです。
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/registerForm.js",
"~/Scripts/jquery.validate*"));
最後に、ビュー:
<div id="registration">
@using (Html.BeginForm()) {
@Html.ValidationSummary()
<fieldset>
<legend>Registration Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
</li>
<li>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
</li>
<li>
@Html.LabelFor(m => m.ConfirmPassword)
@Html.PasswordFor(m => m.ConfirmPassword)
</li>
</ol>
<input type="submit" value="Register" />
</fieldset>
}
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
js の動作を妨げるものは何ですか? 私はすでにこれを理解しようとして約5時間を費やしました。何か提案があれば教えてください。
よろしく、