2012-08-27 3 views
6

MVC3, EF4 프로젝트를 javascript datepicker로 작업하려고하는데 날짜가 영국 형식 (dd/mm/yyyy)이되도록 원하는대로 실행하고 있습니다.).MVC3 세계화 라이브러리 스크립트를 사용하는 날짜 유효성 확인

나는이 문제를 연구하는 데 몇 시간을 보냈으며이 link에서 보았 듯이 'globalize'라이브러리 스크립트를 구현하기로 결정했습니다.

그러나 나는 그것을 실행할 때 ($.validator.methods.date 줄에서 오는) 자바 스크립트에서 Uncaught TypeError: Cannot read property 'methods' of undefined을 얻고 있습니다. 자바 스크립트에 대한 지식은 매우 제한적이며 'globalize'라이브러리를 사용하는 모든 예제는이 오류에 대한 언급이 없으므로 매우 어려움을 겪습니다.

내가 아래에있는 내보기에서 관련 코드를 보여 주었다 :

<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> 
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.globalize/globalize.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.globalize/cultures/globalize.culture.en-GB.js")" type="text/javascript"></script> 

<link href="../../Content/themes/base/jquery.ui.all.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript"> 
    Globalize.culture("en-GB"); 
    $.validator.methods.date = function (value, element) { return this.optional(element) || Globalize.parseDate(value); } 
</script> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.date').datepicker({ dateFormat: "dd/mm/yy" }); 
    }); 
</script> 

//SNIP 

<div class="editor-field"> 
    @Html.TextBox("Expires", Model.Expires, new { @class = "date" }) 
    @Html.ValidationMessageFor(model => model.Expires) 
</div> 

은 누군가가 나이 문제를 해결하는 데 도움이 시겠어요.

대단히 감사합니다.

답변

0

잠시 동안 Globalize 라이브러리를 사용하지는 않았지만 과장 될 수 있습니다. en-GB의 날짜 값만 필요하다고 가정하면 다음 Javascript/jQuery 코드가 작동합니다. here is a fiddle) :

<input type="text" class="date" placeholder="en-gb datepicker" /> 
<button id="btnGetVal">Get Value</button> 

<script type="text/javascript"> 
$(document).ready(function() { 
    /* you correctly have the date format set when initializing the datepicker */ 
    $('.date').datepicker({ dateFormat: "dd/mm/yy" }); 
    /* create an event handler for the "click" function of the button */ 
    $('#btnGetVal').on('click', function() { 
     /* event handler */ 
     var targetValue = $('.date').val(); 
     alert(targetValue); 
    }); 
}); 
</script> 

내가 jQuery를 2.1.0와 jQuery를 UI 1.10.4로이 테스트 - 당신은 (난 당신이 내가 가정의 jQuery 정말 이전 버전을 사용하고 참조 모두 당신의 NuGet 패키지를 업데이트해야 할 수 있습니다 IE8을 지원하거나 이전 버전의 MVC를 사용해야합니다.)

제쳐두고, Javascr을 모두 초기화해야 할 수도 있습니다 ipt 코드를 document.ready() 함수 내부에 작성하여 모든 함수가로드 될 때 액세스 할 수있게하십시오. 왜냐하면 datepicker()를 초기화 할 때 전역 화 코드에 액세스 할 수 없기 때문입니다. 자세한 내용은 여기를 참조하시기 바랍니다. http://learn.jquery.com/using-jquery-core/document-ready/