Twitter Bootstrap のボタンの読み込み状態 ( http://twitter.github.com/bootstrap/javascript.html#buttons ) を使用しています。
HTML:
<input type="submit" class="btn" value="Register" id="accountRegister" data-loading-text="Loading..."/>
JS:
(function ($, undefined) {
$("#accountRegister").click(function () {
$(this).button('loading');
$.ajax({
type:"POST",
url:"/?/register/",
data:$("#loginForm").serialize(),
error:function (xhr, ajaxOptions, thrownError) {
$("#accountRegister").button('reset');
},
success:function (data) {
$("#accountRegister").button('reset');
}
});
return false;
})
})(jQuery);
しかし、多くのボタンがある場合、多くの関数 (?) を記述する必要があります。もちろん、私はこのようなものを作ることができます:
$(".ajax-button").bind("click", function() {
$(this).button("loading");})
そして、jQuery Ajax イベントを使用できますajaxComplete
$(".ajax-button").bind("ajaxComplete", function() {
$(this).button("reset");})
ただし、この方法では、 Ajax リクエストが完了すると、すべてのボタンが通常の状態に設定されます。
ユーザーがbutton1をクリックしてからbutton2をクリックすると(両方のボタンが Ajax リクエストを送信している)、最初の Ajax リクエストが完了すると、通常の状態に設定されます。どのボタンを通常の状態に設定する必要があるかを判断するにはどうすればよいですか?
前もって感謝します。
アップデート
必要なのは、アクション (Ajax リクエスト) をトリガーしたボタンを特定し、状態を読み込み中に設定し、Ajax リクエストが完了すると状態を通常に設定することだけです。