2011-11-23 119 views
0

進出口使用上的所有字段內置的jQuery驗證充分驗證日期時間使用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> 

正常工作,到目前爲止,除了日期時間。它可以,但不是傻瓜證明。我只能輸入數字和斜線。

但是這意味着我可以鍵入3/4//4///4//哪些當然會在提交時拋出一個空參數,因爲它不適合datetime。 (我使用一個日期選擇器來選擇,但你仍然可以在該框中鍵入。)

所以我需要:

  • 任何一種方法來確保它的##/##/####格式
  • 或防止被的只能使用日期時間選擇器
+0

您建議您對答案進行編輯並不合適;如果它明顯不同,你應該將它作爲答案發布,然後接受它。否則,請留下並接受,可能會提及您在評論中如何適合您。 –

回答

1

最後,我用我的模型中的正則表達式屬性: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它的教程。

1

您可以使用該框的只讀屬性,但仍然允許用戶突出顯示覆制文本等。我​​通常更喜歡使用disabled屬性作爲這阻止了用戶從人用藥或使用盒子。使用禁用的唯一缺點是該框不會在提交表單時提交,但如果這不是問題,那麼我更喜歡使用該屬性。

另一種選擇是編寫自己的javascript函數來執行驗證。如果你想使用這種方法,我可以在很早以前寫一篇我可以幫助你的文章。

+0

+1提供了很好的建議。我發現了一個可以分配的正則表達式屬性,以確保它具有我期望的確切格式。甚至接受閏年和只有有效的日期。 ..它非常長:O – Doomsknight

+0

優秀。出於某種原因,我沒有真正考慮過正則表達式。 – CSharpened