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

Как с помощью JavaScript после первой отправки можно сделать кнопку отправки disabled?

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);
});
/*****************************************************************/
});
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@Dasslier
FrontEnd Developer
1. Если выкладываете такой большой кусок кода - оформляйте его в песочнице, так гораздо удобнее его воспринимать.
2. Конкретно в данной задаче ваш код не нужен
3. Нужно дизейблить кнопку после 1ой отправки, или после удачной отправки?

Самый простой способ - выведите сообщение-статус в форме. Если форма ушла успешно - выведите "Бла-бла-бла успешно" и задайте какой-нибудь класс "bla-lba__success", если нет - "bla-lba_failure". Дальше проверяйте через JS, если сообщение статус "успешно" есть - дизейблите кнопку, если нет - дайте возможность отправить еще раз.

Код отправки видимо не ваш? У вас там прямая подсказка - после валидации формы вешается класс. Что мешает таким же макаром повесить класс после статуса 200 ОК? А перед отправкой просто проверять - если класс есть return, если нет - выполнить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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