2011-09-20 99 views
2
 <div> 
      <asp:Label ID="lblClientId" runat="server" CssClass="label" meta:resourcekey="lblClientIdResource" /> 
      <asp:TextBox ID="tbClientId" runat="server" style="width:150px; "/> 
      <asp:Button ID="btnClientId" runat="server" style="width:50px;" meta:resourcekey="btnClientIdResource" /> 
      <asp:CustomValidator ID="rfvClientId" runat="server" ValidationGroup="ClientId" meta:resourcekey="rfvClientIdResource" ControlToValidate="tbClientId" ClientValidationFunction="BtnClickClientId" style="position:absolute;" ValidateEmptyText="True" ><asp:Image ID="Image2" ImageUrl="caution_20.png" runat="server" /></asp:CustomValidator> 
     </div> 



<script type="text/javascript"> 
     function BtnClickClientId(session, args) { 
      ButtonClick(session, args, "<%= tbClientId.ClientID %>", "<%= lblClientId.ClientID %>"); 
     } 
     window.onload = function() { 
      document.getElementById('<%= tbClientId.ClientID%>').focus(); 
     }; 
    </script> 


<asp:ValidationSummary ID="ClientIdValidationSummary" runat="server" BackColor="LightGray" DisplayMode="BulletList" CssClass="validationSummary" EnableClientScript="true" HeaderText='<%$ Resources:GlobalResource, ValidationSummaryResource %>'/> 

因此,此ButtonClick()方法正在工作,並已單獨測試。問題是,當我沒有輸入任何文本框並點擊按鈕時,驗證器按預期工作,並出現在屏幕上。然後它消失。它也從未在頁面驗證摘要中顯示。我如何得到這個工作?自定義驗證器不工作,但允許回發

我試圖在這個文本框上設置一個必需的字段驗證程序,它似乎與該工作,但我不想使用兩個驗證程序。

 <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="tbClientId" ErrorMessage="RequiredFieldValidator" style="position:absolute;"><asp:Image ID="Image2" ImageUrl="caution_20.png" runat="server" /></asp:RequiredFieldValidator> 
      <asp:CustomValidator ID="rfvClientId" runat="server" ValidationGroup="ClientId" meta:resourcekey="rfvClientIdResource" ControlToValidate="tbClientId" ClientValidationFunction="BtnClickClientId" style="position:absolute;" ValidateEmptyText="True" ></asp:CustomValidator> 

此代碼有效,但我不應該使用2驗證器。

+0

「ButtonClick」函數做了什麼?你在那個函數中設置了「arg.IsValid」嗎? – Praveen

+0

不,我不設置它。它只是將標籤的文字變爲紅色 – joncodo

回答

4

您需要根據您的需求來設置「arg.IsValid」到「真」或「假」的javascript函數(即「真」,當你認爲驗證是成功的,否則爲假)。另外,在文件後面的代碼中,最好在按鈕的click事件處理程序中檢查「Page.IsValid」屬性。所以,在javascript中添加這個。

arg.IsValid = false; 

,並在後面的代碼

protected void button_click(..) 
    { 
     if (Page.IsValid) 
     { 
      // Your code, if any exists 
     } 
    } 

希望這有助於!

相關問題