所以我一直在用这个问题敲打我的脑袋几个小时。我正在为我的日期输入字段创建本地化验证。我已经覆盖了默认的jquery日期验证器,并且该方法似乎工作正常。一切似乎按计划进行,但jquery验证器只是不允许我发布表单。
自定义验证方法中的断点在firebug中正确命中,并且它应该返回true。
一旦我继续执行,带有红色矩形的验证错误字段就会消失,但验证摘要仍会显示MVC生成的属性错误。
以下是代码:
tracker.validate.js
// Replace dots so jq validator can understand what's going on
$(function () {
$.validator.addMethod(
"date",
function (value, element) {
var s = value;
s = value.replace(/\./g, '/');
// Chrome requires tolocaledatestring conversion, otherwise just use the slashed format
var d = new Date();
return this.optional(element) || !/Invalid|NaN/.test(new Date(d.toLocaleDateString(value))) || !/Invalid|NaN/.test(new Date(s));
},
""
);
});
$.validator.unobtrusive.parse();
以下是我的局部视图中的脚本引用,此表单位于
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/tracker.validate.js")" type="text/javascript"></script>
日期时间editortemplate
@model DateTime
<input style="width:44%;display:inline;" type="text" name='@(ViewData.TemplateInfo.HtmlFieldPrefix).Day' value='@Model.Date.ToShortDateString()' class='date'/>
<input style="width:30%;display:inline;" type="text" name='@(ViewData.TemplateInfo.HtmlFieldPrefix).Time' value='@Model.ToShortTimeString()' onblur='formatTimeInput(this)'/>
@Html.HiddenFor(model => model)
Datepicker初始化:
$.datepicker.setDefaults($.datepicker.regional['fi']);
$('.date').datepicker({
showOn: "button",
dateFormat: "dd.mm.yy",
buttonImage: '/content/images/calendarIcon.png',
buttonImageOnly: true,
constrainInput: false
});
有什么东西我不知道还是有什么东西可以摆脱这些默认的属性错误?