jQuery 1.9를 사용하는 MVC 4 프로젝트의 jquery.validate.js 오류
Visual Studio 2012의 템플릿을 사용하여 새 ASP.Net MVC 4 프로젝트를 만들었습니다. jQuery 1.9로 업그레이드 한 후 로그인 기능이 중단됩니다. 특히 오류가 발생합니다.
0x800a138f-JavaScript 런타임 오류 : 정의되지 않은 또는 null 참조의 '호출'속성을 가져올 수 없습니다.
jquery.validate.js의 1172 행, 5 열에서
이 문제를 어떻게 해결할 수 있습니까?
이 문제는 jQuery Validation Plugin 1.11.0pre 에서 수정되었습니다 .
안타깝게도 현재 NuGet에는 시험판 빌드가 없으므로 현재 GitHub에서 직접 jquery.validation.js를 다운로드해야합니다.
이제 NuGet을 통해 jQuery.Validation 1.11을 사용할 수 있습니다 (@Simon_Weaver에게 감사드립니다).
최신 정보
그것은과 같은 일반적인 jQuery를 1.9은 jQuery.Validation 코드 기반에 있지만 아직 발표되지 지원
https://github.com/jzaefferer/jquery-validation/pull/613
jQuery.Migrate 1.1.1을 설치하면 jQuery.Validation 1.11, jQuery 1.9 및 2.x에서 제대로 작동합니다.
뿐만 아니라 install-package jQuery.Migrate
BundleConfig.cs에 JavaScript를 추가해야합니다. 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
});
나는 같은 문제가 있었고, 파이어 폭스에서 문제가 없었지만 여전히 오류가 발생합니다. 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 버전으로 업데이트했지만 해당 솔루션 중 어느 것도 작동하지 않았습니다. Pre 버전을 다운로드하지 않고 잘 작동하는 유일한 솔루션은 Texellab에서 제안한 솔루션이었습니다.
근본적인 문제는 jQuery 1.7 (새롭고 개선 된 메서드가 추가되었을 때) 이후로 사용되지 않는 일부 메서드가 1.9에서 제거되었다는 것입니다. jQuery Validate는 분명히 업데이트되지 않았으므로 대신 새 메서드를 사용합니다. 제거 된 메서드를 다시 넣는 jQuery Migrate Plugin을 사용하면이 문제가 해결되었음을 알았습니다.
다른 해결책은 다음과 같습니다.
jQuery 1.71 및 jQuery UI 1.8.20과 함께 MVC 3을 사용했습니다. jQuery UI 탭 위젯을 사용하고 각 탭 영역을 설정하여 입력 필드가 포함 된 부분 페이지를로드했습니다.
Firefox v22 및 Chrome v28에서 잘 작동하며 IE10에서는 실패합니다. 내가 얻은 오류는 'Unable to get property'settings 'of undefined or null reference'입니다.
해결 방법은 부분 형식으로 이동하여 다음 코드를 주석 처리하는 것이 었습니다.
<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>*
이제 모든 브라우저에서 성공적으로 작동합니다.
'developer tip' 카테고리의 다른 글
gruntjs 서버 작업의 목적은 무엇입니까? (0) | 2020.11.30 |
---|---|
여러 메서드 인수의 @Cacheable 키 (0) | 2020.11.30 |
정의되지 않은 표현식 값에 대해 AngularJS에서 자리 표시자를 표시하는 방법은 무엇입니까? (0) | 2020.11.30 |
HelloCordova에서 Ionic 앱의 이름을 바꾸는 방법 (0) | 2020.11.30 |
413 요청 엔티티가 너무 큼-파일 업로드 문제 (0) | 2020.11.30 |