質問

ajaxを介して読み込まれるいくつかのタブがあり、各タブにはバリデーターのセットがあります。タブが有効な場合にのみユーザーにタブの変更を許可したい

バリデーターに検証グループを設定してから、このような特定のグループを確認するとうまくいくと思いました:

function validatePage(group) {
    return Page_ClientValidate(group);
}

ただし、関数を呼び出すと、常にtrueが返されます。誰かが私が間違っていることを見ることができますか?

このようにチェックします

alert(validatePage("presentaciones"));

そして、私はいくつかのバリデータを持っています:

// (...)
<asp:TextBox ValidationGroup="presentaciones" id="txtDescription" runat="server" Text='<%# Eval("Description") %>' MaxLength="50" />
<asp:RequiredFieldValidator ID="DescriptionRequiredFieldValidator" runat="server" ControlToValidate="txtDescription" SetFocusOnError="true" ValidationGroup="presentaciones" ErrorMessage="Debe ingresar una descripción" Display="Dynamic" />
// (...)
役に立ちましたか?

解決

Page.Validate(group)を使用してグループをサーバー側で動作させましたが、これがクライアント側で実行できることを知りませんでした。おそらく、各タブのステータスをチェックするカスタム検証コントロールを実装する必要があります。

他のヒント

推測では、検証スクリプトは接続されていません。関数でalert((typeof(Page_Validators)==&quot; undefined&quot;))を実行し、trueが表示されるかどうかを確認します。あなたはajax経由でタブをロードしていると言いました。検証ツールをページのどこかに配置すると、検証スクリプトの接続に役立つかどうかを確認できます。

他に注意すべき点は、Firefoxとレガシーレンダリングモードです。...このシナリオでは、クライアントサイドだけでは機能しません。

これはクライアント側で実行できます。このように:

  $('.buttonWithSameValidationGroup').bind('click', function () {
                if (Page_ClientValidate($(this).attr('validationgroup'))) {
    //do stuff
  }
});

Page Pre_Renderメソッドに次のサーバー側コードを追加する必要がある場合があります

button1.AddAttributes("validationgriup","group1");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top