Javascript 更好地替代';键控';事件

Javascript 更好地替代';键控';事件,javascript,ajax,autocomplete,mootools,Javascript,Ajax,Autocomplete,Mootools,我有一个输入文本框,它通过AJAX使用这个工具自动填充 我目前正在使用“keyup”事件通过AJAX获取结果。它可以工作,但我觉得它最多也有点笨重,因为每次按键盘都会产生一个AJAX请求 我更愿意在用户完成输入后只发出一个AJAX请求,就像用户暂停一段时间后那样 我尝试过“更改””事件,但更糟糕的是,我不得不离开输入文本框单击以发出AJAX请求,然后再次单击输入文本框以启动“onComplete” 这是我的密码: input.addEvent('keyup', function(e) {

我有一个输入文本框,它通过AJAX使用这个工具自动填充

我目前正在使用“keyup”事件通过AJAX获取结果。它可以工作,但我觉得它最多也有点笨重,因为每次按键盘都会产生一个AJAX请求

我更愿意在用户完成输入后只发出一个AJAX请求,就像用户暂停一段时间后那样

我尝试过“更改””事件,但更糟糕的是,我不得不离开输入文本框单击以发出AJAX请求,然后再次单击输入文本框以启动“onComplete”

这是我的密码:

input.addEvent('keyup', function(e) {
    new Autocompleter.Request.JSON(input.getProperty('id'), url, {
        'postVar': 'search',
        'maxChoices': 6,
        'overflow': false,
        'selectMode': 'pick',
        'delay': 100,
        'forceSelect': false,
        onRequest: function() {
            // do nothing
        },
        onComplete: function() {
            // do nothing
        }
    });
});
我希望你们能理解我的问题


谢谢

执行打开按键功能,然后根据需要将该功能冻结几秒钟

代码:

希望它能解决您的问题,正如您在问题中所说的“我更愿意在用户完成键入后,如用户暂停一段时间后,只发出一个AJAX请求。”

更多只是评论


谢谢…

将选项“延迟”:100,更改为更高的数字。

这并不能回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论。@Krumia是的。用户正在使用一个自动完成插件,该插件有一个选项
delay
,用于将插件延迟到键入完成。也供参考:请在答案中添加这些信息,并进行解释。你提供的参考是同一个问题。你确定你发了正确的链接吗?@Krumia这是正确的链接。它位于已删除的帖子上,只有10K用户可以看到。在这里,作者或问题将此作为解决方案。@sergio所说的是正确的方法。debounce-还可以将键查找缓存作为一个小哈希映射引入,这样可以避免对已经查询过的字符串的重复调用。
input.addEvent('keyup', function(e) {
    setTimeout(function(){
        new Autocompleter.Request.JSON(input.getProperty('id'), url, {
            'postVar': 'search',
            maxChoices: 6,
            overflow :false,
            'selectMode': 'pick',
            delay : 100,
            forceSelect:false,
            onRequest: function() {
                // do nothing
            },
            onComplete: function() {
                // do nothing
            }
        });
    },2000); //1000 = 1sec
});