Как правильно перенаправить страницу после проверки формы в JavaScript?

#javascript

#javascript

Вопрос:

Вот мой код javascript. Я получаю страницу «Свяжитесь с нами», даже если проверка не удалась. как это исправить? Кто-нибудь может мне помочь.Спасибо

 (function () {
    window.addEventListener('load', function () {
    var forms = document.getElementsByClassName('needs-validation');
    var validation = Array.prototype.filter.call(forms, function (form) {
    form.addEventListener('submit', function (event) {
    if (form.checkValidity() === false) {
    form.classList.add('was-validated');
    event.preventDefault();
    event.stopPropagation();
    }
                                                                    
    form.classList.add('was-validated');
    window.location.href = "contact.html";
    
    
    
    }, false);
                                                                    
    });
    }, false);
    })();
  

Ответ №1:

Из вашего кода вы проверяете результат проверки формы, и это нормально. Но в конце вы все равно перенаправляете пользователя. Вам нужно добавить return; в вашем коде после сбоя проверки или добавить перенаправление в блок else

 (function () {
window.addEventListener('load', function () {
var forms = document.getElementsByClassName('needs-validation');
var validation = Array.prototype.filter.call(forms, function (form) {
form.addEventListener('submit', function (event) {
if (form.checkValidity() === false) {
form.classList.add('was-validated');
event.preventDefault();
event.stopPropagation();
return;
}
                                                                
form.classList.add('was-validated');
window.location.href = "contact.html";


}, false);
                                                                
});
}, false);
})();
  

Или:

 (function () {
window.addEventListener('load', function () {
var forms = document.getElementsByClassName('needs-validation');
var validation = Array.prototype.filter.call(forms, function (form) {
form.addEventListener('submit', function (event) {
if (form.checkValidity() === false) {
form.classList.add('was-validated');
event.preventDefault();
event.stopPropagation();
} else {
form.classList.add('was-validated');
window.location.href = "contact.html";
}


}, false);
                                                                
});
}, false);
})();
  

Комментарии:

1. Спасибо за ваш ответ. Я попробовал оба ваших ответа, но он не работает. здесь работает оператор else.есть другой способ исправить это?

2. Я добавил console.log() в else блокирует его работу, но его окно. Расположение. href = «contact.html «; не работает. URL-адрес contact.html это правильно. Не могли бы вы рассказать, где у меня проблема. Спасибо

3. Можете ли вы попробовать удалить кэш браузера и повторить попытку?