我正在使用Asp.Net Mvc3和不引人注目的jquery验证.我想让我的日期验证本地化,我的意思是,jquery验证我的日期是MM/dd/yyyy,但我希望它是dd/MM/yyyy.
我正在尝试使用jQuery Globalize插件(http://github.com/jquery/globalize).我添加了对脚本globalize.js和globalize.culture.pt-BR.js的引用,当我的页面加载时,我正在运行以下脚本:
(function() {
$(function() {
$.datepicker.setDefaults($.datepicker.regional['pt-BR']);
Globalize.culture("pt-BR");
});
}).call(this);
Run Code Online (Sandbox Code Playgroud)
jQuery UI插件作为魅力,但验证不起作用.我还缺少什么?
编辑:
使用下面答案中的链接,我使用Globalize插件解决了问题:
当然,我必须在页面中添加对Globalize插件的引用,以及对我想要使用的文化的引用(所有这些都在插件的站点上提供).之后只是一小段JavaScript代码.
Globalize.culture("pt-BR");
$.validator.methods.date = function(value, element) {
return this.optional(element) || Globalize.parseDate(value);
};
Run Code Online (Sandbox Code Playgroud) 我试图让我的MVC3,EF4项目与javascript datepicker一起工作,但我遇到问题,因为我希望日期是英国格式(年/月/日).
我花了几个小时研究这个问题,我已经决定实现'globalize'库脚本,正如我在这个链接中看到的那样.
但是当我运行它时,我正在使用Uncaught TypeError: Cannot read property 'methods' of undefinedjavascript(来自该$.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 { …Run Code Online (Sandbox Code Playgroud) 我正在使用不显眼的验证来处理本地化的mvc3 Web应用程序.在web.config中我得到了:
<globalization culture="pl-PL" uiCulture="pl" />
Run Code Online (Sandbox Code Playgroud)
Jquery 1.4.4和jquery验证1.6正在使用中.
问题是十进制数字分隔符.
我可以看到jquery验证忽略了文化,并期望点字符始终是小数分隔符.我需要使用逗号代替.我认为例如德语也是如此.
我创建了自己的methods_pl.js文件:
jQuery.extend(jQuery.validator.methods, {
number: function(value, element) {
return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);
}
});
Run Code Online (Sandbox Code Playgroud)
以上是解决十进制数根本无法识别的基本问题.
但是当我尝试在我的模型Decimal Price属性上使用RangeAttribute时,它仍然不起作用.怎么解决这个?
我发现这个有用的代码允许英国日期在Chrome中运行,但我不确定如何实现它.它会覆盖默认日期功能.
date: function(value, element) {
//ES - Chrome does not use the locale when new Date objects instantiated:
//return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
var d = new Date();
return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value)));
},
Run Code Online (Sandbox Code Playgroud)
如何将其添加到jQuery validate中以覆盖默认功能.
这是我找到代码示例的地方