JQueryとjQuery UIを使用しています。ユーザーがajax呼び出しを複数回呼び出すことがあるのは、呼び出しをクリックした直後にボタン/リンクが無効にならないためです。それを防ぐために、「beforeSend」アクションでボタン/リンクを無効にします。
これは私にとって典型的なAjaxコールのようです:
$.ajax({
type: "POST",
url: "someURL"
data: "someDataString",
beforeSend: function(msg){
$(".button").button("disable");
},
success: function(msg){
$(".button").button("enable");
// some user Feedback
}
});
しかし、このボタン無効ロジックをすべてのAjax呼び出しに追加したくありません。/afterおよびajax-callの前に毎回呼び出される関数をグローバルに定義する方法はありますか?
それらを登録するにはgloballyを使用します
と一緒に
ajaxComplete または ajaxStop event
$(".button").ajaxStart(function(){
$(this).attr("disabled","disabled");
});
$(".button").ajaxStop(function(){
$(this).attr("disabled","");
});
はい、各ページでこの関数を呼び出すことにより、すべてのajax呼び出しのデフォルトを設定できます。 http://api.jquery.com/jQuery.ajaxSetup/
また、デフォルトを使用したくないajax呼び出しがある場合は、その特定のajax呼び出しに対してそのオプションを定義するだけです。