簡體   English   中英

自定義比較驗證器

[英]Custom compare validator

我有一個學校作業,其中兩個文本框必須相同,與使用比較驗證器完全相同,但是我們必須使用自定義驗證器。

到目前為止,我使用的代碼是:

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表單時,當我填寫兩個不同的輸入時什么也沒顯示。

除非您嘗試將表單提交到服務器,否則將不會驗證控件。 編輯后將不會立即對其進行驗證。

您可以將AutoPostback設置為true以使每次編輯文本框時都將表單提交到服務器,但這可能會導致一系列問題。

要完全在客戶端上驗證表單而不將其發布到服務器,您需要自己編寫JavaScript代碼,而不是自定義驗證器。

要使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM