我确信当我发现问题是什么时我会讨厌自己,但我不能为我的生活找出为什么这不起作用。我正在网站的其他地方使用setTimeout就像这样,它工作正常。
<input type='button' value='Submit Form' onclick='ValidateForm()'/>
var submitFinalTimeout;
function ValidateForm() {
//Performing a number of validations which may return false;
//I know that the following if condition evaluates as true. But just for giggles I tried moving it outside of the if and it still never fires.
if (types.indexOf("K2") != -1) {
submitFinalTimeout = window.setTimeout(function () { alert("Timeout set"); }, 2000);
validateK2();
return true;
}
return true;
}
当我说验证时,我的意思是如果发现问题我会提醒使用并返回false以防止验证继续。返回值true或false不影响页面是否发布。
我还尝试删除花括号内的所有其他内容,以确保没有其他代码与之冲突。我确实尝试使用ValidateForm函数删除所有其他代码,除了setTimeout,它仍然永远不会触发。
我看到一个类似的帖子,问题是页面上的其他一些javascript错误阻止它工作。但是我在Chrome中的开发者控制台和firebug都没有在页面上显示任何错误或任何类型。关于解释图像的一些警告。
答案 0 :(得分:2)
我猜测在提交表单时会调用ValidateForm
。您没有看到setTimeout
调用的函数的原因是页面被表单提交完全拆除,然后被结果替换。
答案 1 :(得分:0)
我想回应其他评论者:你确定正在调用该函数并且条件被评估为true?
我设置了a JS Fiddle example。一切似乎都很好,假设实际调用了ValidateForm()并且(types.indexOf(“K2”)!= -1)为真:
if (true || types.indexOf("K2") != -1) {
submitFinalTimeout = window.setTimeout(function() { alert("Timeout set"); }, 2000);
}
....
//call the function
ValidateForm();