グループを使用したクライアント側の検証
-
22-07-2019 - |
質問
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");
所属していません StackOverflow