VisualStudio2012のテンプレートを使用して新しいASP.NetMVC4プロジェクトを作成しました。jQuery1.9にアップグレードすると、ログイン機能が機能しなくなります。具体的には、エラーが発生します
0x800a138f-JavaScriptランタイムエラー:未定義またはnull参照のプロパティ'call'を取得できません
行1172、jquery.validate.jsの列5
この問題を解決するにはどうすればよいですか?
VisualStudio2012のテンプレートを使用して新しいASP.NetMVC4プロジェクトを作成しました。jQuery1.9にアップグレードすると、ログイン機能が機能しなくなります。具体的には、エラーが発生します
0x800a138f-JavaScriptランタイムエラー:未定義またはnull参照のプロパティ'call'を取得できません
行1172、jquery.validate.jsの列5
この問題を解決するにはどうすればよいですか?
この問題は、jQuery ValidationPlugin1.11.0preで修正されています。
残念ながら、現在NuGetにはプレリリースビルドがないため、現在、GitHubからjquery.validation.jsを直接ダウンロードする必要があります。
jQuery.Validation 1.11がNuGetから利用できるようになりました(@Simon_Weaverに感謝)。
アップデート
jQuery 1.9の一般的なサポートはjQuery.Validationコードベースにあるようですが、まだリリースされていません
jQuery.Migrate 1.1.1 をインストールすると、jQuery.Validation 1.11、jQuery 1.9、および 2.x で正常に動作します。
を行うだけでinstall-package jQuery.Migrate
なく、次に JavaScript を BundleConfig.cs に追加する必要があります - jQuery の直後に追加しました。jQuery を登録する行は次のようになります。
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js", // jQuery itself
"~/Scripts/jquery-migrate-{version}.js")); // jQuery migrate
問題は、検証スクリプト内のコード行です
$.event.handle.call(this,e);
ここでの問題は$.event.handle
. との両方this
にe
適切な値があります。jQuery は、移行スクリプトhttp://code.jquery.com/jquery-migrate-1.2.0.jsに従って、jQuery.event.dispatch を優先して $.event.handle を非推奨にしました。
これらのエラーを修正するには、ハンドルへの参照をディスパッチに置き換えるだけです。
これを document.ready コールバックでラップして、他のスクリプトの実行後に確実に実行されるようにすることができます。
$(function(){
jQuery.event.handle = jQuery.event.dispatch
});
私は同じ問題を抱えていました.firefoxでは問題ありませんが、それでもエラーが発生します. jquery-2.0.0 を使用しています。jQuery 検証プラグイン 1.11.1
私は修正を見つけました:交換
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
と
@section Scripts{
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}
バンドルのスクリプト パスを次の行に置き換えるとうまくいきました。
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
Nugetを介してjquery検証を更新しようとしましたが、jqueryを2.0バージョンに更新しましたが、それらのソリューションはどれも機能しませんでした. プレバージョンをダウンロードせずに正常に機能した唯一のものは、Texellab によって提案されたソリューションでした
別の解決策は次のとおりです。
jQuery 1.71 および jQuery UI 1.8.20 で MVC 3 を使用しました。jQuery UI Tabs ウィジェットを使用し、各タブ領域をセットアップして、入力フィールドを含む部分ページをロードしました。
Firefox v22 と Chrome v28 では問題なく動作しますが、IE10 では失敗します。私が得たエラーは、「未定義またはnull参照のプロパティ「設定」を取得できません」でした
解決策は、部分的なフォームに移動して、次のコードをコメント アウトすることでした。
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>*
すべてのブラウザで正常に動作するようになりました。
根本的な問題は、jQuery 1.7 (新しく改善されたメソッドが追加されたとき) 以降に廃止されたいくつかのメソッドが 1.9 で削除されたことです。jQuery Validate は明らかに更新されていないため、代わりに新しいメソッドを使用しています。削除されたメソッドを元に戻すjQuery Migrate Pluginを使用すると、これに関する問題が解決することがわかりました。