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