-1

我敢肯定,当我发现问题所在时,我会恨自己,但我终其一生都无法弄清楚为什么这不起作用。我在网站的其他地方使用 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 都没有在页面上显示任何错误或任何类型。只是关于解释图像的一些警告。

4

2 回答 2

2

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

于 2012-12-06T22:24:48.917 回答
0

我想回应其他评论者:您确定正在调用该函数并且条件正在被评估为真?

我设置了一个 JS Fiddle 示例。一切似乎都很好,假设 ValidateForm() 实际被调用并且 (types.indexOf("K2") != -1) 为真:

        if (true || types.indexOf("K2") != -1) {
            submitFinalTimeout = window.setTimeout(function() { alert("Timeout set"); }, 2000);
        }
....

        //call the function
        ValidateForm();
于 2012-12-06T22:32:11.720 回答