CGIを使って


ダブルクリックの防止

Debian squeezeでWebサーバーを立ち上げて、rubyのCGIを使ってhomepageを作ってみた。いろいろと細かいプログラムを書いて、それなりに動くようになったが、問題が残っていた。submitをダブルクリックすると、二回データーが送られてしまうのだ。これまでは知っていて無視をしていたが、いつかは重大な問題になるだろうということで、対策をしてみた。

以前はjavascriptを使わないといけないと思っていたが、実は使わなくても良いらしい。以下のようにすると、一回submitすると、disableになって、二回目は無効になる。

<INPUT name="button" TYPE="submit" value="submit" onclick="this.disabled=true">

rubyのCGIクラスを使う場合には、

cgi=CGI::new("html4")
cgi.submit({"value"=>"submit","name"=>"button","onclick"=>"this.disabled=true"})

としたら、うまく行った。思ったよりも簡単に出来て助かった。

2010.1.22追記 firefoxではうまく動いているが、ieでは動いていないことを発見した。ieでは、onclick=“this.disabled=true;this.form.submit();“としないといけないらしい。