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

时间:2016-07-12 18:47:13

标签: javascript validation c#-4.0

我的样本取自

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>

请解决此问题的任何帮助

2 个答案:

答案 0 :(得分:1)

我有一个类似的问题。除了在客户端禁用验证器外……

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

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

valName.IsValid = True

答案 1 :(得分:0)

Page.IsValid是在服务器端计算的,并不知道您在客户端关闭了javascript验证。 您可以检查服务器,检查Checkbox1是否忽略验证,即将runat =“server”添加到复选框:

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

并确保如果页面验证或未选中复选框,则会触发serverside子句:

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);
   }
}
相关问题