2012-02-01 99 views
1

使用asp驗證器,是否有一種方法來驗證輸入的出生日期是否在年齡範圍內,比如5歲和22歲?我現在做一個asp:compareValidator和一個asp:rangeValidator,但我需要添加另一個級別的當前日期的範圍驗證與在文本框中輸入的值,以通知年齡超出允許的範圍(5和22歲只)asp驗證器 - 確定年齡是否在範圍內

感謝 託尼

+0

你能粘貼,你有那些2個驗證標記?我不確定是否需要爲同一個文本框添加一組驗證器,或者您想查看當前驗證器有什麼問題。 – 2012-02-01 16:19:29

+0

我目前的驗證器確實沒有什麼問題....我只需要檢查當前的年齡,以確保它在正確的年齡範圍內。 – pithhelmet 2012-02-01 16:23:25

+0

那麼,在服務器上,很容易計算相對於當前日期的第5個和第22個生日。因此,將MinimumValue和MaximumValue設置爲這兩個日期。 – 2012-02-01 16:44:21

回答

2

你可以使用一個ASP.NET的CustomValidator這一點。在你的ASP.NET代碼,添加以下控制:

<asp:CustomValidator runat="server" id="ageByDateCheck" 
    ControlToValidate="txtDate" 
    OnServerValidate="CheckAgeByDate" 
    ErrorMessage="You are not between the ages of 5 and 22." /> 

而在你的代碼隱藏,你必須檢查歲的新方法。

public void CheckAgeByDate(object source, ServerValidateEventArgs args) 
{ 
    var date = DateTime.Parse(args.Value); 
    args.IsValid = true; //Replace this with your age check algorithm. 
} 

編輯 如果你正在尋找客戶端驗證,你就必須創造一些JavaScript做您的驗證和控制的ClientValidation字段中指定它。所以,你的ASP.NET控件現在看起來是這樣的:

<asp:CustomValidator runat="server" id="ageByDateCheck" 
    ControlToValidate="txtDate" 
    OnServerValidate="CheckAgeByDate" 
    ClientValidation="ClientValidate" 
    ErrorMessage="You are not between the ages of 5 and 22." /> 

你可能不必有一個不同的名字,但我傾向於讓事情分開代碼理智。

爲了您的javascript:

<script language="javascript"> 
function ClientValidate(source, arguments) 
{ 
    var date = new Date(arguments.Value); //make sure it's something javascript can parse 
    //validate age here 
    arguments.IsValid = isValid(date); 
} 
</script> 
+0

任何方式來實現這個沒有回傳? – pithhelmet 2012-02-01 16:24:26

+1

javascript:'

';然後腳本:'function validateForm(){/ *從txtbox獲取日期,在這裏驗證它,返回true/false * /}' – 2012-02-01 16:30:16

+0

對不起 - 使用asp驗證器 – pithhelmet 2012-02-01 16:50:01