简体   繁体   English

如何在javascript中的onclick后延迟重定向?

[英]How to delay redirect after onclick in javascript?

I am trying to delay the redirect of my page so that the success message can be seen.我正在尝试延迟我的页面的重定向,以便可以看到成功消息。 So far I have not had any luck in getting it.到目前为止,我还没有运气得到它。 I have tried to stop it with setTimeout with the location.href but that doesn't seem to be working.我试图用带有location.href setTimeout来阻止它,但这似乎不起作用。 Can someone point me in the right direction?有人可以指出我正确的方向吗?

//Form //形式

 <form class="form" action="/" method="GET">
            <div class="alert"></div>
            <input type="text" class="textfields name" name="name" required placeholder="Name">
            <input type="email" class="textfields email" name="email" required placeholder="Email">
            <textarea class="message" placeholder="Your Message..."></textarea>
            <button type="submit" class="footbtn">Send</button>
        </form>

// Code 
footBtn.addEventListener('click', (e) => {
    const alertMessage = document.querySelector('.alert');
    const email = document.querySelector('.email').value;
    const name = document.querySelector('.name').value;
    if (name === '' || email === '') {
        alertMessage.innerHTML = 'Name/Email Required';
        alertMessage.style.padding = '10px';
        alertMessage.style.color = 'red';
        e.preventDefault();
    } else {
        alertMessage.innerHTML = 'Thanks! Someone will be in touch with you soon!';
        alertMessage.style.color = 'black';
        alertMessage.style.padding = '10px';
        alertMessage.style.textAlign = 'center';
    }
})

You need to prevent the default action and manually submit the form after a delay.您需要阻止默认操作并在延迟后手动提交表单。 Also, listen for the submit event of the form instead of the click event on the submit button.另外,监听表单的提交事件而不是提交按钮上的点击事件。

let form = document.querySelector('form');
form.addEventListener('submit', (e) => {
    e.preventDefault();
    const alertMessage = document.querySelector('.alert');
    const email = document.querySelector('.email').value;
    const name = document.querySelector('.name').value;
    if (name === '' || email === '') {
        alertMessage.innerHTML = 'Name/Email Required';
        alertMessage.style.padding = '10px';
        alertMessage.style.color = 'red';
    } else {
        alertMessage.innerHTML = 'Thanks! Someone will be in touch with you soon!';
        alertMessage.style.color = 'black';
        alertMessage.style.padding = '10px';
        alertMessage.style.textAlign = 'center';
        setTimeout(()=>form.submit(), 700);
    }
})

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM