昔、「Javascriptでボタンのダブルクリックを抑制する」という記事でも書いたんですが、これを書いたのが今から5年前ぐらいの情報でして、ちょっと前にはてブで同じような記事があったので、ブックマークしていました。
で、最近(とはいっても数年前)はどうやってるのかみてみると、ボタンをdisableにして押せなくしてるみたいですね。どんなもんかということで試してみました。
参考:二度押し防止の onsubmit で disable にするやつ by Drk7jpさん
このページのはじめに載ってた方法だと、prototype1.6.jsでは戻ったときとかにボタンが押せなくなってしまっていたので、「onsubmit で disable にするやつ by 鷹の島さん」の方法を使いました。
テストで使ったJSPは以下。あんまりよくなさそうだけど、時間稼ぐために頭に3秒Sleepしてます。
<% String countString = request.getParameter("count"); int count = 0; try{ count = Integer.parseInt(countString); count++; }catch(Exception e){ count = 1; } %> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> http://./utility.js http://./prototype-1.6.0.2.js </head> <body> <form action="index.jsp" method="GET"> <input type="text" name="string" value="" /> <input type="hidden" name="count" value="<%=count%>" /> <input type="submit" name="subsub" value="OK" /> </form> <p> string=<%= request.getParameter("string") %><br /> count=<%=count%><br /> subsub=<%= request.getParameter("subsub") %> </p> </body> </html>
たしかにこれだと、うまくいくのですが、1秒後にdisableが戻るのがなんか気持ち悪い。これはAPサーバにリクエストを投げるときに、1秒以上かからない前提でやってるのかなー。