2016-12-05 18 views
0

validatorEnable(.Enabledで試したもの)をfalseに設定して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."); 
       } 
      } 

答えて

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) 

を記述する必要があります。

関連する問題