道歉,如果这个问题很明显,但我无法弄清楚为什么它会突然失效。我有一个jquery datepicker,只要我记得就一直工作正常,但突然间,当我尝试提交datepicker在datepicker上的表单重新出现时,好像我提交的日期无效。我已经使用以下代码行将我的日期设置为英国风格:
<script type="text/javascript">
$(document).ready(function () {
$('.date').datepicker({ dateFormat: "dd/mm/yy", minDate: 0 });
});
</script>
我在我的视图中设置了datepicker,如下所示:
@Html.TextBox("DateDue", "", new { @class = "date" })
我认为有些事情要求选择的日期字符串采用美国格式(因为它会提交有效的我们日期(mm / dd / yyyy),但不会提交英国格式,即使它已在javascript中设置。< / p>
我错过了一些明显的东西吗?谁能告诉我这里我做错了什么?
我不确定是否有必要,但是datepicker所在的表单是这样创建的:
@using (
Html.BeginForm(
Html.BeginForm(
"Create",
"Task",
FormMethod.Post,
new { id = "taskCreateForm" }
)
)
)
PS。日期字符串实际上有效,并且在Firefox中没有问题但在Chrome中没有问题
任何帮助表示赞赏
编辑:
当我禁用不显眼的js验证时,问题就消失了:
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"
type="text/javascript"></script>
我觉得这与此有关,并试图从模型注释中删除[Required]和[DataType(DataType.Date)],但这并不能解决问题。
不确定如何保持不引人注目的js以及让英国日期字符串正常工作,但我越来越多地转而为表单编写自己的javascript验证而不是甚至打扰内置的东西,这似乎永远不会为比“必要的”验证检查更复杂的事情工作..
答案 0 :(得分:2)
您可以使用dateFormat,因此在您的javascript文件中(在页面加载后等),您可以放置:
$('.datepicker').datepicker({dateFormat:'yy-mm-dd'});
答案 1 :(得分:2)
这篇文章特别可能涉及到某些内容:
向下滚动到:“Globalized jQuery Unobtrusive Validation”
这个问题的答案也可能有所帮助: Localizing jquery validation with asp.net mvc 3
jQuery允许您覆盖不同的验证函数,如下所示:
$.validator.methods.number = function (value, element) {
return !isNaN($.parseFloat(value));
}
您可以为日期验证程序执行类似的操作,并针对有效的英国日期针对regEx运行它。
答案 2 :(得分:1)