javascript - 如何在javascript中的onclick后延迟重定向?
问题描述
我正在尝试延迟页面的重定向,以便可以看到成功消息。到目前为止,我还没有运气。我试图setTimeout
用 the来阻止它,location.href
但这似乎不起作用。有人可以指出我正确的方向吗?
//形式
<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';
}
})
解决方案
您需要阻止默认操作并在延迟后手动提交表单。另外,监听表单的提交事件,而不是提交按钮上的点击事件。
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);
}
})
推荐阅读
- c# - 如果当目标进行小幅度移动时变换处于内部有限范围内,则变换也在移动,直到变换接触目标
- reactjs - CoreUI + React Hook 表单
- javascript - 更改 HTML 中的货币颜色(使用 javascript/regex)
- python - 返回具有坐标 (x, y) 的元组列表的函数,但如果使用这些坐标绘制矩形,它们不应相交
- c++ - 在互斥锁未锁定时调用解锁?
- python - 当 subprocess.call (python) 调用行项目时删除 \n
- python - 为什么 Colorama 不能与 Visual Studio 一起使用?
- sql - 如何为 Snowflake SQL UDF 指定任何类型
- javascript - 为什么我在 useEffect() 的角度计算中得到“未定义”?
- javascript - 带有knockout.js的自定义绑定处理程序中的显式设置值绑定处理程序