2013-04-20 45 views
-5

我在javascript中有一个函数,它由ajax调用组成。我们称它为search();当另一个完成时调用方法

然后我有一个事件onKeyUp。

在onKeyUp事件中,我有一个enterPressed()函数。

我想在search()完成后调用此函数。

我认为回调在这里没有帮助。

这里是我的代码:

function search() { 
     ... 
} 

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

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

} 

function enterPressed() { 
     ... 
} 
+0

节目的想法我们你的代码 – 2013-04-20 08:58:43

+0

回调可能是这样做的方式。 – Blender 2013-04-20 08:59:06

+0

@ Floradu88那里。 – 2013-04-20 09:01:26

回答

2

回调是前进的方向。

或者:

  1. 绑定在当搜索结束
  2. 设置一个变量(范围为两种功能),触发该回调的keyup事件处理程序,并改变其值时搜索结束。在执行keyup处理程序之前,请检查该值,如果没有更改,立即return

(这是假设的enterPressed从KEYUP函数的调用是显著。如果包括KEYUP代码的是一个红色的鲱鱼,只是表明你也想将它在其他时间以及然后直接使用它作为回调)。

2

您将使用成功/完成回调完成调用您的功能。例如:

$.ajax({ 
    ... 
    success: enterPressed, 
    ... 
:); 
+0

我需要在那里调用onKeyPressed,而不是enterpressed。怎么做? – 2013-04-20 10:08:26

0

完成第一个函数之后,将第二个函数作为参数传递给第一个函数,并在最后执行它。

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

search(function() { 
    ed.onKeyUp.add(function (ed, e) { 
     if (e.keyCode == 13) { 
      enterPressed(); } 
    } 
}); 
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得到真正的迟早...但你有你现在可以做什么:)