2015
4月
1
(水)
[jQuery] フォームの二重送信を防止する(小ワザつき)
XOOPS の d3forum で二重送信してしまう場合が結構あったので、jQuery でちょっと対応してみた。
フォーム送信時に submit ボタンが disabled だと、そのボタンのデータが送信されず、例えば d3forum だと「プレビュー」を押してるのに「送信」扱いになってしまうので、setTimeout で、disable 属性の付与をちょっとだけ遅延させてあります。
また、別窓で開くフォーム用に target 属性を持つフォームは除外し、念のため 15 秒後に再活性化するようにしてあります。
これを、HypCommon の設定の「その他の設定」-「<head>内の最後に挿入するタグ」に記述しておくと XOOPS サイト全体にこの機能が追加されます。
- 追記
- [jQuery] Web ページのフォーム投稿時問題のあれこれを上手いことするやつ でもっといい感じのものを作ってみました。
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>
|