>我从中取样
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);
}
}