Page.IsValid总是返回false,即使我在java脚本中禁用了验证

Page.IsValid always return false even i disabled validation in java script

本文关键字:脚本 java 验证 IsValid 返回 false Page      更新时间:2023-09-26

>我从中取样

http://www.aspsnippets.com/Articles/Enable-Disable-ASPNet-Validator-Client-Side-Validation-using-JavaScript-or-jQuery.aspx

该示例适用于客户端,但在代码中,他不检查他只设置的页面验证

protected void Button1_Click(object sender, EventArgs e)
    {
            ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack occured.');", true);
    }

当我更新隐藏的代码以验证页面时

  protected void Button1_Click(object sender, EventArgs e)
    {
       Page.Validate("Group1");
        if (Page.IsValid)
        {
            ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack occured.');", true);
        }
    }

Page.IsValid总是返回false,即使我在java脚本中禁用了ID="valName"的RequiredFieldValidator验证,如下所示:

<form id="form1" runat="server">
    <u>JavaScript</u>
    <hr />
    UserName:
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
    <asp:RequiredFieldValidator ID="valName" ControlToValidate="txtName" runat="server"
        ErrorMessage="*Required" ForeColor="Red" ValidationGroup="Group1" />
    <br />
    Enable Validation:
<input type="checkbox" id="CheckBox1" onclick="ToggleValidator(this);" checked="checked" />
    <br />
    <asp:Button Text="Submit" runat="server" OnClick="Button1_Click" ValidationGroup="Group1" />
    <script type="text/javascript">
        function ToggleValidator(chk) {
            var valName = document.getElementById("<%=valName.ClientID%>");
        ValidatorEnable(valName, chk.checked);
    }
    </script>
    <br />
    <br />
</form>

请对此问题提供任何帮助

我也有类似的问题。除了在客户端禁用验证器...

document.getElementById('<%= valName.ClientID%>').enabled = false;

。我在按钮单击事件中添加了以下内容:

valName.IsValid = True

Page.IsValid 是服务器端计算的,并不知道您是否将 JavaScript 验证从客户端切换了。服务器端您可以选中复选框 1 以忽略验证,即将 runat="server" 添加到复选框中:

<input type="checkbox" id="CheckBox1" onclick="ToggleValidator(this);" checked="checked" runat="server" />

并确保在页面验证或未选中复选框时触发服务器端子句:

protected void Button1_Click(object sender, EventArgs e)
{
   Page.Validate("Group1");
   if (Page.IsValid || !CheckBox1.Checked)
   {
      ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('PostBack occured.');", true);
   }
}