我有一个实时搜索方法,可以在您在文本框中键入内容时进行搜索。它使用的服务需要花费很长时间,因此我决定仅在用户暂停或停止输入n秒(例如0.5秒)时才调用搜索服务。在这样做时
j$132('#AdvanceSearch table:first input').unbind('keyup').keyup(function () {
window.setTimeout(function () {
LoadAdvanceSearch();
}, 500);
});
它等待500毫秒是可以的,但是每次等待它都会等待一次,然后发送另一个服务呼叫。
有一个技巧可以在用户完成输入时在onkeyup下仅调用该方法一次。
我会做这样的事情;
var keyTimer;
j$132('#AdvanceSearch table:first input').keyup(function () {
if(keyTimer){
clearTimeout(keyTimer);
}
keyTimer = setTimeout(function () {
LoadAdvanceSearch();
}, 500);
});
如果尚未触发,它将清除每次超时。因此,只有在用户停止输入半秒钟后,它才会运行。