2011-09-20 69 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 
     } 
    } 

希望这有助于!