1

jqueryを使用して有効にしたいカスタムバリデーターを無効にしました。
どうやってやるの?
以下のコードはRequiredFieldValidatorsでは機能しますが、CustomValidatorsでは機能しません。

        ValidatorEnable($('#cvPass'), true);

解決策は何ですか?
編集:
私はクライアント側ではなく、サーバー側の検証を使用しています。
クライアント側の検証を使用している場合、カスタムバリデーターの有効化と無効化に問題はありません。
@JoshMeinの素敵なシンプルなコードをありがとう

前もって感謝します

4

1 に答える 1

1

私はあなたが試したことに何の問題もありませんでした。これが私のために働いた簡単な例です:

HTML

<asp:TextBox runat="server" ID="txt_Test" />
<asp:CustomValidator runat="server" ID="val_Test" ValidateEmptyText="true" ClientValidationFunction="MyValidation" ControlToValidate="txt_Test" ErrorMessage="Test"></asp:CustomValidator>
<asp:Button runat="server" ID="btn_Test" Text="Test" onclick="btn_Test_Click" />
<input type="button" value="disable validator" onclick="disableValidator()" />
<input type="button" value="enable validator" onclick="enableValidator()" />

Javscript

function enableValidator() {
    ValidatorEnable($('[id$=val_Test]')[0], true);
}

function disableValidator() {
    ValidatorEnable($('[id$=val_Test]')[0], false);
}

function MyValidation(sender, args) {
    if ($('[id$=txt_Test]').val() == "")
        args.IsValid = false;
}

編集:あなたの新しい情報で、私は何が問題なのか知っていると信じています。サーバーの検証が開始される前に、ページが再ロードされます。これにより、最後の既知の状態であったサーバーに応じて、バリデーターが無効に設定されます。これは、バリデーターが、値がサーバーにポストバックされるコントロールではないためです。サーバーにコントロールを検証するように指示できる値を使用してhiddenFieldを設定できます。

于 2012-06-28T18:42:10.773 に答える