ページへ戻る

− Links

 印刷 

[jQuery] フォームの二重送信を防止する(小ワザつき) :: XOOPS マニア

UsersWiki:nao-pon/blog/2015-04-01


RSS of nao-pon/blog[5]
2015 4月 1 (水)
 

[jQuery] フォームの二重送信を防止する(小ワザつき) anchor.png[6]

Tag: プログラミング[7] JavaScript[8]

XOOPS[9] の d3forum で二重送信してしまう場合が結構あったので、jQuery でちょっと対応してみた。

フォーム送信時に submit ボタンが disabled だと、そのボタンのデータが送信されず、例えば d3forum だと「プレビュー」を押してるのに「送信」扱いになってしまうので、setTimeout で、disable 属性の付与をちょっとだけ遅延させてあります。

また、別窓で開くフォーム用に target 属性を持つフォームは除外し、念のため 15 秒後に再活性化するようにしてあります。

これを、HypCommon の設定の「その他の設定」-「<head>内の最後に挿入するタグ」に記述しておくと XOOPS[9] サイト全体にこの機能が追加されます。

追記
[jQuery] Web ページのフォーム投稿時問題のあれこれを上手いことするやつ[2] でもっといい感じのものを作ってみました。
Everything is expanded.Everything is shortened.
1
2
3
4
5
6
7
8
9
 
-
-
|
|
|
!
!
 
<script type="text/javascript">
jQuery(function($){
  $('form:not([target])').on('submit',function(e){
    var btn = $(this).find('input[type="submit"]');
    setTimeout(function(){btn.attr('disabled', 'disabled')},100);
    setTimeout(function(){btn.removeAttr('disabled');},15000);
  });
});
</script>


Last-modified: 2015-04-01 (水) 22:09:35 (JST) (3304d) by nao-pon