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