2015-01-26 119 views
0

我有一個學校的任務,其中兩個文本框必須相同,與使用比較驗證程序完全相同,但是我們可以使用來使用自定義驗證程序。自定義比較驗證

我迄今爲止所使用的代碼是:

protected void CustomValidator1_ServerValidate1(object source, ServerValidateEventArgs args) 
{ 
    if (TextBox2.Text == TextBox3.Text) 
    { 
     args.IsValid = true; 
    } 
    else 
    { 
     args.IsValid = false; 
    } 

} 

和ASP.NET

<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="The second and third haven't got the same input." 
onservervalidate="CustomValidator1_ServerValidate1" 
ValidateEmptyText="True" ValidationGroup="Custom"></asp:CustomValidator> 

但是,當我調試Web窗體沒有任何顯示,當我填寫兩個不同的輸入。

+0

你提交表單?那時它將被驗證。 – Servy 2015-01-26 20:07:53

+0

不,但它應該顯示當我點擊文本框,是否有任何可能的方式使它像那樣工作(就像比較驗證)? – Kyle 2015-01-26 20:10:41

+2

將窗體回發到服務器時將進行驗證。 – Servy 2015-01-26 20:11:51

回答

2

只有當您嘗試將表單提交給服務器時,控件纔會被驗證;他們不會被編輯後立即驗證。

您可以指定AutoPostbacktrue,以便每次編輯文本框時都會將表單提交給服務器,但這可能會導致它自己的一組問題。

要讓表單完全在客戶端進行驗證,而不發佈到服務器,您需要自己編寫該JavaScript代碼,而不是自定義驗證器。

1

要使用CustomValidator啓用客戶端(在發佈之前)驗證,您必須將ClientValidationFunction設置爲某個JavaScript。

喜歡的東西:

<asp:CustomValidator ID="CustomValidator1" runat="server" 
ErrorMessage="The second and third haven't got the same input." 
onservervalidate="CustomValidator1_ServerValidate1" 
ClientValidationFunction="CustomValidator1_ClientValidate1" 
ValidateEmptyText="True" ValidationGroup="Custom"></asp:CustomValidator> 

<script type="text/javascript"> 
    function CustomValidator1_ClientValidate1(source, arguments) { 
     if (/* validation code */) { 
     arguments.IsValid = true; 
     } else { 
     arguments.IsValid = false; 
     } 
    } 
</script>