@Gambi-Titto
Начинающий програмист

Как запретить пользователям дважды отправлять форму?

JS
document.addEventListener("DOMContentLoaded", function(){
  /*****************************************************************/
  document.getElementById('feedback-form').addEventListener('submit', function(evt){
    var http = new XMLHttpRequest(), f = this;
    evt.preventDefault();
    http.open("POST", "contacts.php", true);
    http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {
        alert(http.responseText); // это лучше убрать, чтобы сразу переадресация была, без ожидания пока пользователь нажмет кнопку "OK" 
        window.location.replace("https://www.site.ru");
      }
    }
    http.send(new FormData(f));
  }, false);
  /*****************************************************************/
            var form = document.querySelector('.needs-validation');
        form.addEventListener('submit', function(event) {
            if (form.checkValidity() === false) {
                event.preventDefault();
                event.stopPropagation();
            }
            form.classList.add('was-validated');
        })
/******************************************************************/
$(".custom-file-input").on("change", function() {
  var fileName = $(this).val().split("\\").pop();
  $(this).siblings(".custom-file-label").addClass("selected").html(fileName);
});
/*****************************************************************/
});
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 3
ematveev
@ematveev
PHP-разработчик, тех. писатель, преподаватель
1) с помощью JavaScript после первой отправки можно сделать кнопку отправки disabled
2) можно саму форму убрать вообще, после перегрузки страницы
3) можно куку ставить после отправки, если она есть - значит обработчик на серваке получаемые данные с формы игнорит
Ответ написан
Eridani
@Eridani
Мимо проходил
В сессию timestamp последнего отправления, и при следующей отправке сравнивайте, не прошло ли N времени с момента последней отправки.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы