Контроль времени кнопки отправки - PullRequest
0 голосов
/ 13 ноября 2011

gustavotkg недавно поделился следующей частью своих знаний в ответ на вопрос о запрете посетителям отправлять несколько записей в файл.Он предложил следующее:

«Если вы отключите кнопку отправки в событии onclick, посетителю
придется обновить страницу для повторной отправки вашей формы».

Youможет сделать что-то вроде:

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

Отключение кнопки дает временное решение, и, действительно, кажется, что несколько записей трудно предотвратить.

Может ли помочь этому временному решению, предложенному gustavotkg , дополнительно разрешить отключение кнопки отправки на период времени , скажем,неделю или 168 часов?

1 Ответ

1 голос
/ 13 ноября 2011

Вот простой пример, демонстрирующий желаемую функциональность.

Для файла cookie устанавливается срок действия 7 дней.Когда кнопка нажата, событие onclick проверяет, установлен ли cookie, если оно есть, оно отклоняет отправку, возвращая false.В противном случае, функция устанавливает cookie и позволяет пройти через отправку.

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ что это не гарантирует что-либо, как любое (не новичок)) пользователь может удалить свои куки и повторно отправить запись.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...