我尝试延迟10秒,然后提交这样的表格,但没有成功。如果不拖延,它仍将是真实的。
<form class="form" method="post" action="" ENCTYPE = "multipart/form-data" onsubmit="return checkform(this);" >
<input type="submit" name="submit" value="OK">
</form>
<script language="JavaScript" type="text/javascript">
function checkform ( form )
{
var test = "1";
setTimeout(function(){
if(test != '0'){
return false;
}
else
{
return true;
}
}, 10000);
}
</script>
我想知道,如何使用javascript延迟checkform?
答案 0 :(得分:0)
您必须返回checkForm
功能。回调内的return
不会返回外部函数。即使这样做也必须立即,而不是10秒钟
你可以使用一个标志,这样你就可以通过再次提交表格再次在延迟中再次调用该函数
var allowSubmit = false;
function checkform(form) {
if (allowSubmit) {
return true;
} else {
var test = "1";
setTimeout(function() {
if (test === '1') {
// when validation passes resubmit with updated flag
allowSubmit = true;
form.submit();
}
}, 10000);
return false;
}
}
答案 1 :(得分:0)
因此,问题在于提交请求的结果与您在函数中返回内容的结果相同。
例如,如果您有这样的事情:
function returnExplanation(){
return 0;
console.log("You will never see me");
}
返回后,您永远不会在控制台中看到该文本。
提交功能相同。虽然还有其他一些方法可以实现这一点,但我对您的代码进行了一些调整以实现您的目标。
<form class="form" id="submitForm" method="post" action="" ENCTYPE = "multipart/form-data">
<input type="button" name="submit" value="OK">
</form>
<script language="JavaScript" type="text/javascript">
$(document).ready(function () {
$('#submitForm').on('click', function ()
{
var test = 1;
setTimeout(
function ()
{
if (test !== 0)
{
console.log("false");
return false;
} else
{
console.log("true");
return true;
}
}, 10000);
$('#submitForm').submit();
});
});
</script>
我做的第一件事就是给你的表格一个“id”。这允许jQuery(或javascript)轻松破译他们应该与哪个元素进行通信。
接下来,我删除了你的“onsubmit”属性,并添加了相应的jQuery来响应click事件。
之后,我将您的按钮从“提交”更改为“按钮”类型。
最后,在超时后,您的表单仍然会显示以下行:
$('#submitForm').submit();
我希望这有助于您成为更好的HTML / jQuery程序员。
答案 2 :(得分:0)
如果你有jQuery库,这是一个更好的方法。在您的情况下,页面会被提交给自己并刷新,因此您的10秒会重置。
<form class="form" method="post" action="" enctype = "multipart/form-data" >
<input type="submit" name="submit" value="OK">
</form>
$(function(){
$("form").bind("submit", function(e){
e.preventDefault();
e.stopPropagation();
var test = "1";
setTimeout(function(){
if(test != '0'){
//return false;
alert("false");
}else{
alert("true")
//return true;
}
}, 10000);
});
});