Visual Forceでの送信ボタン2度押し防止策

salesforceでvisualforceのcommandButtonで、ボタンを連打すると、
送信が完了してページが遷移するまでに何度でもデータが送信されてしまう。

単純に、apexクラス内で2度目はinsertしない、とかにしてればいいのだけど、
それをvisualforceで完結させることが出来たので、メモ。

apex:commandButton内で、onclickを使って、JSを呼んで、
1度目だとtrue、2度目だとfalseを返すようにする。
trueが返って来た時だけ、action内の関数が実行される。

//JS
<script type="text/javascript">
var isSave = false;
function check(){
    if (!isSave) {
        isSave = true;
        return true;
    }
    return false;
}
</script>

//HTML
<apex:commandButton action="{!save}" onclick="return check();" image="{!URLFOR($Resource.remind, 'images/btn_send.gif')}" alt="OK" />

これで、連打しても大丈夫。

参考:http://blog.livedoor.jp/volvic_beer/archives/52301425.html

   このエントリーをはてなブックマークに追加