[英]Disabled required validator still causes validation
我使用validatorEnable(也嘗試使用.Enabled)設置禁用了jQuery中的驗證器,以使錯誤消息消失,但該表單對於該驗證器仍然無效。
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.");
}
}
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)
...在執行驗證之前。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.