現: 2015-04-01 (水) 22:09:35 nao-pon[3] [4] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | #navi | ||
+ | RIGHT:&rsslink(../); | ||
+ | #boxdate | ||
+ | * [jQuery] フォームの二重送信を防止する(小ワザつき) [#k7b786a8] | ||
+ | RIGHT:&tag(プログラミング,JavaScript); | ||
+ | |||
+ | XOOPS の d3forum で二重送信してしまう場合が結構あったので、jQuery でちょっと対応してみた。 | ||
+ | |||
+ | フォーム送信時に submit ボタンが disabled だと、そのボタンのデータが送信されず、例えば d3forum だと「プレビュー」を押してるのに「送信」扱いになってしまうので、setTimeout で、disable 属性の付与をちょっとだけ遅延させてあります。 | ||
+ | |||
+ | また、別窓で開くフォーム用に target 属性を持つフォームは除外し、念のため 15 秒後に再活性化するようにしてあります。 | ||
+ | |||
+ | これを、HypCommon の設定の「その他の設定」-「<head>内の最後に挿入するタグ」に記述しておくと XOOPS サイト全体にこの機能が追加されます。 | ||
+ | |||
+ | :追記| | ||
+ | [[[jQuery] Web ページのフォーム投稿時問題のあれこれを上手いことするやつ>../2015-04-03]] でもっといい感じのものを作ってみました。 | ||
+ | |||
+ | |||
+ | #code(javascript){{ | ||
+ | <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> | ||
+ | }} | ||
+ | |||
+ | RIGHT:&font(90%){&page_comments;}; | ||
+ | #navi |
(This host) = https://xoops.hypweb.net