-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 の戻り値は、ページが投稿されるかどうかには影響しません。

中括弧内の他のすべてを削除して、他のコードが競合しないようにしました。setTimeout を除いて ValidateForm 関数を使用して他のすべてのコードを文字通り削除しようとしましたが、それでも起動しません。

問題がページ上の他のjavascriptエラーであり、ページが機能しないという同様の投稿を見ました。しかし、Chrome の開発者コンソールも firebug もページにエラーや種類を表示しません。画像の解釈に関するいくつかの警告。

4

2 に答える 2

0

他のコメント投稿者をエコーし​​たい:関数が呼び出され、条件がtrueと評価されていることを確認しますか?

JSFiddleの例を設定しました。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 に答える