Javascript window.setTimeout未触发

Javascript window.setTimeout未触发,javascript,Javascript,当我发现问题所在时,我肯定会恨我自己,但我一辈子也弄不明白为什么这样做行不通。我在站点的其他地方使用setTimeout,就像这样,它工作得很好 <input type='button' value='Submit Form' onclick='ValidateForm()'/> var submitFinalTimeout; function ValidateForm() { //Performing a number of validations which ma

当我发现问题所在时,我肯定会恨我自己,但我一辈子也弄不明白为什么这样做行不通。我在站点的其他地方使用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;
    }

var submitFinalTimeout;
函数ValidateForm(){
//执行一些可能返回false的验证;
//我知道下面的if条件的评估结果是真的,但只是为了咯咯地笑,我试着把它移到if之外,但它仍然没有触发。
if(type.indexOf(“K2”)!=-1){
submitFinalTimeout=window.setTimeout(函数(){alert(“Timeout set”);},2000);
验证k2();
返回true;
}
返回true;
}
当我说validate时,我的意思是如果发现问题,我会提醒用户,并返回false以阻止验证继续进行。返回值true或false不影响页面是否发布

我还尝试删除大括号内的所有其他内容,以确保没有其他代码与它冲突。我确实尝试过用ValidateForm函数删除除setTimeout之外的所有其他代码,但它仍然不会触发


我看到一篇类似的帖子,其中的问题是页面上的其他javascript错误阻止了它的工作。但是我的Chrome开发者控制台和firebug都没有在页面上显示任何错误。只是一些关于解释图像的警告。

我猜在提交表单时会调用
ValidateForm
。您没有看到由
setTimeout
调用的函数的原因是,表单提交会完全破坏页面,然后被结果替换。

我想回应其他评论员:您确定正在调用函数,并且条件的计算结果为true吗

我准备好了。假设实际调用了ValidateForm(),并且(types.indexOf(“K2”)!=-1)为真,一切看起来都很好:


如何调用
ValidateForm
?您是否制作了日志以检查是否实际调用了
ValidateForm()
。@jmease:显示它,以及
类型是什么。是的。我知道ValidateForm函数和if语句都按照所描述的那样工作,因为validateK2函数是执行的。表单是在运行
ValidateForm
之后提交的吗?页面是否在超时触发前被重定向?我同意,希望在发布之前看到按钮代码。:)单击按钮后将激发ValidateForm函数。它是一个html输入,不发布页面。它与表单“提交”没有任何联系@jmese:好的。(坦白地说,我不相信这一点,因为如果这是真的,函数将在两秒钟后被调用,但这很好。)如果你给我们提供更多的上下文,也许我们可以帮助你。
        if (true || types.indexOf("K2") != -1) {
            submitFinalTimeout = window.setTimeout(function() { alert("Timeout set"); }, 2000);
        }
....

        //call the function
        ValidateForm();