当用户停止或暂停键入时,仅在onkeyup下调用一次方法

时间:2014-02-19 10:25:01

标签: javascript jquery javascript-events onchange onkeyup

我有一个实时搜索方法,可以在您输入文本框时进行搜索。它使用的服务需要相当长的时间,所以我决定只在用户暂停或停止输入n秒(例如0.5秒)时才调用搜索服务。虽然这样做

j$132('#AdvanceSearch table:first input').unbind('keyup').keyup(function () {
    window.setTimeout(function () {
        LoadAdvanceSearch();
    }, 500);
});

它等待500毫秒这很好但是对于每个键盘它等待然后发送另一个服务电话。

在onkeyup下有一个技巧,它只在用户完成输入时调用该方法一次。

1 个答案:

答案 0 :(得分:4)

我会做这样的事情;

var keyTimer;

j$132('#AdvanceSearch table:first input').keyup(function () {

    if(keyTimer){
        clearTimeout(keyTimer);
    }
    keyTimer = setTimeout(function () {
        LoadAdvanceSearch();
    }, 500);

});

如果尚未触发,它将每次清除超时。因此,只有当用户停止输入半秒钟时才会运行。