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

问题描述 投票:2回答:1

我有一个实时搜索方法,可以在您在文本框中键入内容时进行搜索。它使用的服务需要花费很长时间,因此我决定仅在用户暂停或停止输入n秒(例如0.5秒)时才调用搜索服务。在这样做时

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

它等待500毫秒是可以的,但是每次等待它都会等待一次,然后发送另一个服务呼叫。

有一个技巧可以在用户完成输入时在onkeyup下仅调用该方法一次。

javascript jquery onchange jquery-events onkeyup
1个回答
4
投票

我会做这样的事情;

var keyTimer;

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

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

});

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

© www.soinside.com 2019 - 2024. All rights reserved.