繁体   English   中英

自定义验证程序不起作用,但允许发回邮件

[英]Custom Validator not working but allows post back instead

        <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个验证器。

您需要根据需要在javascript函数中将“ arg.IsValid”设置为“ true”或“ false”(即,如果您认为验证成功,则设置为“ true”,否则设置为false)。 另外,在文件背后的代码中,始终建议在按钮的click事件处理程序中检查“ Page.IsValid”属性。 因此,在javascript中添加此代码。

  arg.IsValid = false;

并在后面的代码中

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

希望这可以帮助!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM