2010-03-03

railsで処理中メッセージを出して他の処理をできないようにする

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
なんかしらの処理を行っている際に他のボタンなどを押してもらいたくないことがあったりします。

Railsには、2重クリック防止として
submit_tag("実行",:disable_with => "処理中...")
のような感じにすれば、そのボタンをdisableにして2重クリックは防止できます。
ただ、あくまでも押したボタンだけが押せなくなるだけで、他のメニューなどは当然クリックなどができます。

これを防止するためにjqueryのプラグインの
jQuery BlockUI Plugin (v2)
を使わせていただくことにしました。

使い型的には、以下のような感じです。
まずはヘッダーぐらいに以下のような感じで書いておきます。
<%= javascript_include_tag 'jquery' %>
<%= javascript_include_tag 'jquery.blockUI' %>
<script type="text/javascript">
 <!--
  $(function($) {
   $('.exec_do').click(function() {
    $.blockUI({ message:'<h1>実行中...</h1>' });
   });
  });
 // -->
</script>

そしてsubmitの部分を
submit_tag("実行",:class => "exec_do")
とすればよいです。
コメントを投稿