1

blurイベントに Ajax 機能を備えた入力フィールドと、ページに commandButton があります。入力フィールドの値を変更し、タブで移動せずに commandButton をクリックすると、どのメソッドが最初に呼び出されますか? 入力フィールドまたはボタンに添付されたリスナー?

これまでの私の経験から、最初に呼び出されるものはさまざまであり、それが私のアプリケーションでいくつかの問題を引き起こしています。入力フィールドのリスナーが常に最初に呼び出されるようにしたいと思います。

この状況を処理する方法を知っている人はいますか?

更新: 応答に感謝し、もう少しトラブルシューティングを行った後、前述のように ajax リスナーが最初に呼び出されることに気付きましたが、まれに、リスナー メソッドが目的のロジックの処理を完了する前にボタン アクションが呼び出されることがあります。私の場合、ボタン アクションが呼び出される前に処理を終了するリスナー メソッドが必要です。そうしないと、予期しない動作が発生する可能性があります。これを行うことは可能ですか?

4

1 に答える 1

1

JSF のすべてが HTML と JavaScript に変換されることに注意してください。したがって、そのような簡単なテスト:

<input type="text" id="field1" onblur="blurFunction();">
<br/>
<button onclick="clickFunction()">Click</button>

知っておくべきことを教えてくれます。私が行ったテストでは、blur最初に出てきます。

これに問題がある場合は、ボタンをクリックしたときに実行する必要があるものが実行されていることを確認する簡単なチェックをしてみませんblurか?

編集

編集された質問に従って、いつでもイベントにフラグを設定できますblur

function blurFunction() {
    document.myVar = 1;
    //... rest of the function
}

function clickEvent() {
    if(document.myVar = 1) {
        //wait
    } else {
        //do your click event
    }
}

変数をグローバル スコープに入れることはお勧めしません。これは、これを行う方法のほんの一例です。

于 2013-03-04T18:34:40.640 に答える