Jquery ui datepicker日期格式上的Jquery UI验证错误始终以法语触发
我有一个带有日期字段的表单。这是它在Razor视图中的外观:Jquery ui datepicker日期格式上的Jquery UI验证错误始终以法语触发,jquery-ui,validation,format,multilingual,globalization,Jquery Ui,Validation,Format,Multilingual,Globalization,我有一个带有日期字段的表单。这是它在Razor视图中的外观: @Html.TextBoxFor(model => model.TargetDate, string.Format("{0:D}", Model.TargetDate), new { @class = "datePicker" }) 在我的JS文件中,我是这样声明日期选择器的: $.datepicker.setDefaults($.datepicker.regional[Globalize.culture().lan
@Html.TextBoxFor(model => model.TargetDate, string.Format("{0:D}", Model.TargetDate), new { @class = "datePicker" })
在我的JS文件中,我是这样声明日期选择器的:
$.datepicker.setDefaults($.datepicker.regional[Globalize.culture().language]);
$(".datePicker").datepicker({
dateFormat: Globalize.culture().language == "en" ? "DD, MM dd, yy" : "DD dd MM yy",
});
如您所见,应用程序是多语言的
加载视图时,日期会正确显示在字段中。但是,当我试图更改日期或在应用程序设置为法语时提交表单时,会触发验证错误。这是生成的HTML:
<input class="datePicker hasDatepicker input-validation-error" data-val="true" data-val-date="The field TargetDate must be a date." name="TargetDate" type="text" value="mercredi 16 avril 2014" id="dp1396482596956">
它与英语配合得很好
我正在使用全球化包以及Jquery-2.1.0和Jquery-ui-1.10.1
知道是什么导致了验证吗?我认为格式不对?我找不到任何解决方案来修复验证,所以我做了一个变通办法:我添加了一个文本框。第一个文本框包含格式化和本地化的datepicker日期,并且未映射到viewmodel,因此验证将正常。datepicker更新第二个不可见的字段,该字段以标准格式映射到viewmodel 我在视图中添加了一个EditorTemplate
@Html.EditorFor(model => model.TargetDate, "GoalTargetDate")
这就是我的GoalTargetDate.cshtml的样子
@model DateTime?
<span class="date setDate @(Model.HasValue ? string.Empty : "noDisplay")">
@Language.Goals.By
<input class="datePicker" value="@(Model.HasValue ? Model.Value.ToString("D") : string.Empty)" />
@Html.TextBoxFor(model => model, Model.HasValue ? Model.Value.ToString("yyyy-MM-dd") : null, new { @class = "dateValue noDisplay" })
</span>
<span class="date addDate @(Model.HasValue ? "noDisplay" : string.Empty)">Add date</span>
$.datepicker.setDefaults($.datepicker.regional[Globalize.culture().language]);
$(".datePicker").each(function() {
$(this).datepicker({
dateFormat: Globalize.culture().language == "en" ? "DD, MM dd, yy" : "DD dd MM yy",
altField: $(this).closest(".setDate").find(".dateValue"),
altFormat: "yy-mm-dd"
});
});