【发布时间】:2021-10-16 13:38:15
【问题描述】:
我在提交事件处理程序中根据条件和 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() -
submit事件不会因为您在其中一个处理程序中调用setTimeout而暂停。看看.preventDefault() -
@SuperDJ 这不是重点,为什么当我在那里返回虚假陈述时提交表单?
-
@Andreas 我确实放了 e.preventDefault(),但是当验证为真时我无法提交表单,表单提交时没有值。
标签: javascript html jquery forms submit