2011年
1月
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2011-01-20 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();"としないといけないらしい。