47114


CGIを使って、Webサーバー内のコマンドを実行したいのですが、クライアント側での多重クリックを防ぐためWebブラウザ上でボタンクリック後、一定期間ボタンを無効にするようなことは出来るでしょうか？


CC BY-SA 4.0
2018-07-31T01:51:26.517
47111
2018-07-31T04:08:14.407
15090
question
html html5
ブラウザの多重クリック防止


可能です。  
ボタンクリック直後にボタンを無効にした後、setTimeout等で一定時間経過後にボタンの無効を解除するとよいと思います。


CC BY-SA 4.0
2018-07-31T02:45:58.387
47114
2018-07-31T02:45:58.387
17014
47111
answer


Cookieか何かに現在時刻を保存して比較するか、  
ボタンを無効化して押せなくするか(念のためフラグも入れとくといいです)  
色々やり方はあるかと思います。  
サーバ側でセッション管理するかすればクライアントではなく  
サーバで弾くことも出来るかと思います。

[code]

    var lastClick=0;
    var interval=10*1000;
    function click1(e){
        var now = (+new Date());
        var diff = now - lastClick;
        if(interval<=diff){
            lastClick=now;
            //This Allow
            console.log("On Clicked 1 : "+(new Date(now)));
            return;
        }
        //This Deny
    }
    
    var isLock=false;
    function click2(e){
        if(!isLock){
            isLock=true;
            $(e).attr("disabled","disabled");
            setTimeout(function(){
                $(e).removeAttr("disabled");
                isLock=false;
            },interval);
            console.log("On Clicked 2 : "+(new Date()));
        }
    }
[/code]

[code]

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button onclick="click1();">秒数管理</button>
    <button onclick="click2(this);">ボタン無効化</button>
[/code]


CC BY-SA 4.0
2018-07-31T04:08:14.407
47117
2018-07-31T04:08:14.407
47111
answer