如果我选择日期 >12,我会在 chrome 上收到验证消息
我使用了带有语法的本地化日期选择器
var abc = $("#culture").val();
$.datepicker.setDefaults($.datepicker.regional[""]);
$("#dob").datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'dd-mm-yy',
yearRange: '-90:-15',
defaultDate: '-90y'
});
$.datepicker.setDefaults($.datepicker.regional[abc]);
另一个问题:我在 Controller 上以不需要的格式获取日期,这就是为什么我的数据库保存错误的条目(日期代替月份,月份代替日期)..建议我可能的解决方案...
我发现相关的是LINK 1
但是以上方法都不起作用...
最佳答案
首先,如果您使用 MVC,并且显示来自服务器的一些日期,则应该显示如下日期:
@Html.TextBox("InsertDate", Model.InsertDate.ToString("dd/MM/yyyy"), new { @class = "date" })
在你的 jquery 中:
$('.date').datepicker({ dateFormat: "dd/mm/yy" }).val();
如果您的文化是 en-US,则 ModelState.IsValid 将中断。 一个肮脏的黑客是这样的:
var insertDateStr = ModelState.Values.ToList()[3].Value.AttemptedValue;
var insertDate = DateTime.ParseExact(insertDateStr, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);
最后,对于 chrome 上的红色,只需以文本框的样式添加背景颜色白色即可。
@Html.TextBox("InsertDate", Model.InsertDate.ToString("dd/MM/yyyy"), new { @class = "date", @style = "background-color: white;" })
虽然很脏,但是很管用..
关于Jquery datepicker 采用美国日期格式进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10793459/