使用jQuery验证完全验证日期时间

时间:2011-11-23 11:16:07

标签: jquery validation jquery-validate

我正在使用内置的jQuery验证

<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>

到目前为止,除了datetime之外,所有字段都可以正常工作。没关系,但不是万无一失。我只能键入数字和斜杠。

但这意味着我可以键入3/4//4///4//,当然会在提交时返回null参数,因为它不再适合日期时间。 (我确实使用了一个日期选择器来选择它,但你仍然可以在框中输入。)

所以我需要:

  • 要么是一种确保##/##/####格式
  • 的方法
  • 或者为了防止能够手动输入框,只使用日期时间选择器

2 个答案:

答案 0 :(得分:1)

您可以使用该框的readonly属性,但仍然允许用户突出显示要复制的文本等。我​​通常更喜欢使用disabled属性,因为这可以防止用户操纵或使用该框。使用禁用的唯一缺点是在提交表单时不会提交该框,但如果这不是问题,那么我更喜欢使用该属性。

另一种选择是编写自己的javascript函数来执行验证。我有一个很久以前写过的地方,如果你想使用那种方法,我可以帮助你。

答案 1 :(得分:1)

最后,我在模型上使用了Regex属性:http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.regularexpressionattribute.aspx

[RegularExpression(@"^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$", ErrorMessage = "Must be a valid date of format dd/mm/yyyy.")]

这在表格dd / mm / yyyy上有效,并确保有效日期,包括闰年。

修改

进行此类验证的更好方法是自定义验证属性。 http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute.aspx

Google for for tutorials。