ぽかぽかウンティの自由帳

ぽかぽか動物園から投稿します。

rails の :disable_with で二重送信防止した後に戻る history.back() すると disabled のままな問題

Ruby on Rails で便利な機能の一つに form の submit ボタン連打による二重送信防止機能がある。

submit ボタンに :disable_with で文字列を渡すと自分で Javascript を書かずによろしくやってくれる。

しかし Firefox だとブラウザの戻るボタンで戻ると submit ボタンが disabled のままになってしまい、クリックできなくなってしまう。

その回避策を調べてみたら onpageshow イベントで対応できると書いてあったので試したらうまくいった。

// page_show_enabled を class に持つ submit ボタンを活性化
;(function($) {
  $(window).on('pageshow', function(ev) {
    $('input[type=submit].page_show_enabled').prop('disabled', false);
  }); 
})(jQuery);