2009-12-04 39 views
1

有沒有辦法查看日期是否有效,而不使用驗證器?驗證日期而不使用驗證器?

我不能在這個實例中使用驗證器,這是一個很長的故事,太多的類型,但它與嵌套控件不能在JavaScript中找到。但是在插入日期之前,我想確保它在插入之前有效。有任何想法嗎?

我正在使用maskeditor,日期看起來像這樣"03/__/____",這會導致插入問題。

回答

2

您是否在尋找DateTime.TryParse

DateTime dt; 
bool isValid = DateTime.TryParse("03/__/____", out dt); // returns false 
+0

我相信他的意思是客戶端 – 2009-12-04 21:00:46

3

在客戶端,使用的onblur控件的調用javascript函數,即:

function makeDateValid(text) 
{ 
    //relevent js date formatting code 
    return validDateText; 
} 
</script> 

,並在你的控制

<asp:TextBox ID="txtDate" runat="server" 
onBlur="this.value=makeDateValid(this.value)" /> 

那麼你不」不需要用javascript找到控件。

儘管如此,你不應該相信這一點。您應該在服務器端進行驗證(DateTime.TryParse),並參數化您的值。

0

最穩定的方法是使用日曆控件,它將結果存儲在日期時間變量中,該日期時間變量定義爲「有效」,併爲任何目的生成各種格式化的字符串。

如果您需要使用編輯,則TryParse的替代方法是檢查字符串中是否有兩個正斜槓,然後執行一個字符串.Split。這將分別爲您提供三個元素,然後驗證每個元素(數組[0]> 0和< 13是數組[1]> 0和< 29,30,31,32)是否爲array [2]> = today.year和< today.year + 2等)

這樣,你不能只是報告一個無效的日期,而是報告日期的哪個部分是無效的,以及爲什麼。由於當您拒絕不符合業務規則的理論有效日期時,無疑會得到具體的結果,所以最好保持與用戶的一致性,並且儘可能具體地通過驗證。

2

使用以下javascript。然後,您可以禁用提交按鈕/鏈接,直到驗證通過。

function checkdateformat(userinput){ 
     var dateformat = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/ 
     return dateformat.test(userinput) //returns true or false depending on userinput 
    } 

此正則表達式例如從here

採取還檢查了這些其它實例/代碼:

http://www.the-art-of-web.com/javascript/validate-date/

http://www.rgagnon.com/jsdetails/js-0063.html

和一個jQuery插件: http://bassistance.de/jquery-plugins/jquery-plugin-validation/

+0

我會給這個鏡頭 謝謝 – Eric 2009-12-04 22:59:57