javascript - 使用 setTimeout 提交表单未按预期工作
问题描述
我在提交事件处理程序中根据条件和 setTimeout 语句提交表单,但是即使我在 setTimeout 函数中设置 return false,表单仍然会被提交。
bool = true;
$('.form-example').submit(function(e) {
//some_stuff where I am get a value true or false in variable bool
setTimeout(function () {
if(bool) {
console.log('form shouldnt submit coz the following statement is return false');
return false;
}else{
return true;
}
}, 1000);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="" method="post" class="form-example">
<div class="form-example">
<label for="name">Enter your name: </label>
<input type="text" name="username" id="username" required>
</div>
<input type="submit" name="submit_user">
</form>
解决方案
e.preventDefault()
仅当您不想提交表单时才应使用。
var bool = false;
$('.form-example').submit(function(e) {
//some_stuff where I am get a value true or false in variable bool
if(bool) {
alert('Not submit');
e.preventDefault();
return false;
} else {
alert('Submit');
return true;
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="" method="post" class="form-example">
<div class="form-example">
<label for="name">Enter your name: </label>
<input type="text" name="username" id="username" required>
</div>
<input type="submit" name="submit_user">
</form>
推荐阅读
- matrix - 幂迭代在随机 SVD 中如何工作?
- audio - 如何在包含两个或多个音轨的视频文件中使用 ffmpeg 更改音频语言
- javascript - 基于另一个包含javascript键的数组过滤对象数组
- javascript - 您如何提交表单、弹出新文本并保持在同一页面上?
- python - 如何在 PyCharm 中扩展选择?
- postgresql - postgres中的自定义order by子句?
- angular - Angular 中的 AR.js 库,性能问题
- gitlab - (
):在第 8 行第 8 列的上下文中不允许映射值 - javascript - IE SCRIPT1028:预期的标识符、字符串或数字
- android - 在片段中使用上下文的更好方法是什么?