送信ボタンの時間制御

gustavotkg shared the following piece of his
knowledge recently in response to a query about preventing visitors
submitting multiple enteries to a file. He suggested as
follows:

“onclickイベントの送信ボタンを無効にすると、訪問者の
  フォームを再送信するためにページを更新する必要があります」。

     

次のようなことができます:

var btn = document.getElementById("button-id");
btn.onclick = function() {
    btn.disabled = 'disabled';
}

ボタンを無効にすると一時的な解決策が得られ、実際には複数の腸が防止することは難しいようです。

これは一時的にできますか gustavotkg
で示唆されているように、送信ボタン時間
期間
の週または168hrsのですか?

ベストアンサー

ここには、望ましい機能を示す簡単な例があります。

クッキーの有効期限は7日間に設定されています。ボタンがクリックされると、onclickイベントはCookieが設定されているかどうかをチェックし、設定されている場合はfalseを返すことによってサブミッションを拒否します。それ以外の場合、関数はクッキーを設定し、サブミッションを通過させます。

PLEASE NOTE that this is not
going to guarantee anything, as any (non-novice) user can delete
their cookies and resubmit an entry.

<script type="text/javascript">
// Thanks to http://www.quirksmode.org/js/cookies.html
function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}    
</script>

<form action="#" method="POST">
    <input id="button-id" type="submit" value="Submit" />
</form>

<script type="text/javascript">
var btn = document.getElementById("button-id");
btn.onclick = function() {
    var cookie_name = 'submitted_entry';
    btn.disabled = 'disabled';
    if( readCookie( cookie_name))
    {
        alert( 'You can not submit an entry again!');
        return false;
    }
    else
    {
        createCookie( cookie_name, 1, 7);
    }
}

</script>

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です