Javascript 使用globalize库脚本进行MVC3日期验证
我试图让我的MVC3、EF4项目与javascript日期选择器一起工作,但我遇到了一些问题,因为我希望日期采用英国格式(dd/mm/yyyy) 我花了几个小时研究这个问题,并决定实现我在本文中看到的“globalize”库脚本 但是,我得到了一个Javascript 使用globalize库脚本进行MVC3日期验证,javascript,asp.net-mvc-3,Javascript,Asp.net Mvc 3,我试图让我的MVC3、EF4项目与javascript日期选择器一起工作,但我遇到了一些问题,因为我希望日期采用英国格式(dd/mm/yyyy) 我花了几个小时研究这个问题,并决定实现我在本文中看到的“globalize”库脚本 但是,我得到了一个未捕获类型错误:当我运行它时,无法读取javascript中未定义的的属性“methods”(来自$.validator.methods.date行)。我对javascript的了解非常有限,我发现使用“globalize”库的所有示例都没有提到这个错
未捕获类型错误:当我运行它时,无法读取javascript中未定义的
的属性“methods”(来自$.validator.methods.date
行)。我对javascript的了解非常有限,我发现使用“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>
全球化。文化(“en GB”);
$.validator.methods.date=函数(值,元素){返回此.optional(元素)| | Globalize.parseDate(值);}
$(文档).ready(函数(){
$('.date').datepicker({dateFormat:“dd/mm/yy”});
});
//剪断
@TextBox(“Expires”,Model.Expires,new{@class=“date”})
@Html.ValidationMessageFor(model=>model.Expires)
有人能帮我解决这个问题吗
非常感谢。我已经有一段时间没有使用Globalize库了,但我觉得它对您来说可能太过分了——假设您只需要en GB格式的日期值,下面的Javascript/jQuery代码就可以了(并且:
获得价值
$(文档).ready(函数(){
/*初始化日期选择器时正确设置了日期格式*/
$('.date').datepicker({dateFormat:“dd/mm/yy”});
/*为按钮的“单击”功能创建事件处理程序*/
$('btnGetVal')。在('click',function()上{
/*事件处理程序*/
var targetValue=$('.date').val();
警报(目标值);
});
});
我用jQuery2.1.0和jQueryUI1.10.4测试了这一点——您可能需要更新这两个版本的NuGet包(我发现您使用的是非常旧的jQuery版本,所以我假设您需要支持IE8,或者使用的是旧版本的MVC)
另一方面,您可能希望确保在document.ready()函数中初始化所有Javascript代码,以便在加载时可以访问所有函数(因为在初始化datepicker()时无法访问您的Globalize代码。我建议您在此处阅读更多内容:
<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>