0

ASP.NET ログイン コントロールを使用しており、送信ボタンをクリックするとjQuery throbberが表示されます。これは正常に機能しますが、クライアント側の検証が失敗し、ボタンが非表示の場合、throbber が表示されるため、ユーザーはフォームを再送信できません。クライアント側の検証が失敗した場合、throbber を非表示にするにはどうすればよいですか?

4

2 に答える 2

1

少しトリッキーでしたが、私はこれを機能させました。まず、ログインコントロールをテンプレート化する必要がありますが、それでもボタンのClientIDにアクセスできないため、クラスセレクターを追加する必要がありました。最初にスロバーを追加して、軽く/文書化されていないPage_ClientValidate()イベントを使用して検証が成功した場合にオンにしようとしましたが、スロバーはデフォルトでボタンのクリックイベントにサブスクライブし、検証が行われる前にオンになるため、機能しませんでした。

動作したのは、ミニAPIに固執し、Page_IsValidがtrueの場合にボタンにスロバーを追加することでした。ボタンのCausesValidation属性はtrue(デフォルト)である必要があります。

javascript:

    $(document).ready(function() {
        $('.login').click(function() {
            if (Page_IsValid) {
                $('.login').throbber({ image: "Images/throbber.gif" });
            }
        });
    });

ボタンのマークアップ; ログインコントロールテンプレートからの唯一の追加は、CssClass属性です。

<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="uxLogin" CssClass="login" />
于 2010-01-03T19:39:12.897 に答える
1

詳細についてあまり知らずに...クライアント側の検証がパスしたときにだけthrobberを開始しないのはなぜですか? ユーザーとして、UI 要素が非常に一時的に点滅し、再び削除されてエラー メッセージに置き換わるのを見て驚くでしょう。

于 2010-01-02T20:53:22.437 に答える