-5

ajax呼び出しで構成されるjavascriptの関数があります。これを search(); としましょう。

次に、イベント onKeyUp があります。

onKeyUp イベントには、enterPressed() 関数があります。

search() 終了後にこの関数を呼び出したいです。

ここではコールバックは役に立たないと思います。

これが私のコードです:

function search () {
       ...
}

ed.onKeyUp.add(function (ed, e) {

    if (e.keyCode == 13)
                enterPressed();

}

function enterPressed() {
       ...
}
4

4 に答える 4

2

コールバックは前進する方法です。

また:

  1. 検索が終了したとき、または検索が終了したときに発生するコールバックにキーアップ イベント ハンドラをバインドします。
  2. 変数を (両方の関数のスコープ内で) 設定し、検索が終了したらその値を変更します。keyup ハンドラーで何かを行う前に、値を確認し、変更されていない場合はreturnすぐに確認してください。

(これはenterPressed、keyup 関数からの の呼び出しが重要であることを前提としています。keyup コードのインクルードが、他のときにも呼び出したいことを示すだけのニシンである場合は、それをコールバックとして直接使用します。 )。

于 2013-04-20T09:01:03.113 に答える
2

完了時に関数を呼び出すには、success/complete コールバックを使用します。何かのようなもの:

$.ajax({
    ...
    success: enterPressed,
    ...
:);
于 2013-04-20T09:02:12.447 に答える
0

最初の関数が終了したら、2 番目の関数を引数として最初の関数に渡し、最後に実行します。

function search (callback) {
    // your code here
    callback();
}

search(function () {
    ed.onKeyUp.add(function (ed, e) {
        if (e.keyCode == 13) {
            enterPressed(); }
    }
});
于 2013-04-20T09:03:35.523 に答える
0

これを試して:

var searchDone = false;

function search () {
       ...
   searchDone = true;
}

ed.onKeyUp.add(function (ed, e) {

    if (e.keyCode == 13)
                enterPressed();

}

function enterPressed() {
   if (!searchDone) {
      setTimeout(enterPressed,100); 
      return;
   }

       ...
}

遅かれ早かれ searchDone が true になることを確認する必要があることは明らかです...しかし、今何ができるかについてのアイデアがあります:)

于 2013-04-20T09:04:24.153 に答える