我在jquery中使用validatorEnable(也尝试使用.Enabled)将false验证器设置为false,错误消息消失,但表单仍然对该验证器无效。
HTML:
<tr>
<td class="text-right" style="width: 574px">
<asp:Label ID="usernameLabel" runat="server" Text="Username: "></asp:Label>
</td>
<td style="width: 181px">
<asp:TextBox ID="usernameTxt" runat="server"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ID="usernameRequiredValidator" runat="server" ControlToValidate="usernameTxt" ErrorMessage="Username is required."></asp:RequiredFieldValidator>
<br />
<asp:CustomValidator ID="usernameExistsValidator" runat="server" ControlToValidate="usernameTxt" ErrorMessage="This username already exists." OnServerValidate="usernameExistsValidator_ServerValidate"></asp:CustomValidator>
</td>
</tr>
以下行禁用验证程序,错误消息消失。
ValidatorEnable($("[id*=usernameExistsValidator]")[0], false);
检查以确定哪个验证器无效:
foreach (BaseValidator validator in Page.Validators)
{
if (validator.Enabled && !validator.IsValid)
{
// Put a breakpoint here
string clientID = validator.ClientID;
System.Diagnostics.Debug.WriteLine(clientID + "is invalid.");
}
}
答案 0 :(得分:0)
ValidatorEnable
函数仅禁用客户端的验证程序。您用于“检查以确定哪个验证器无效”的代码正在检查服务器端的验证器。
无论您在客户端使用哪个禁用验证程序的条件,都需要在运行验证例程之前在服务器端重新创建它。例如,如果您正在呼叫
//Disable validator if user name textbox is empty
ValidatorEnable($("[id*=usernameExistsValidator]")[0], $("#usernameTxt").val().length > 0);
然后在服务器端你应该写
//Disable validator if user name textbox is empty
this.usernameExistsValidator.Enabled = (this.usernameTxt.Text.Length > 0)
...在执行验证之前。