'keyup'活动的更好选择

时间:2015-05-13 05:33:02

标签: javascript ajax autocomplete mootools

我有一个输入文本框,可以使用此Autocompleter Plugin通过AJAX自动填充Mootools。

我目前正在使用' keyup '事件通过AJAX获取结果。 它有效,但我觉得它有点笨拙,因为每次键盘按下都会产生一个AJAX请求。

一旦用户完成输入后,我宁愿只做 ONE 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
        }
    });
});

我希望你们能在这里理解我的问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

将选项'delay': 100,更改为更高的数字。

答案 1 :(得分:0)

执行on buttonpress功能,然后根据需要将函数冻结几秒钟

代码:

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
});

希望它能解决您的问题,正如您在问题中所说的那样“一旦用户完成输入后,我宁愿只做一个AJAX请求,就像用户暂停一样。”

更多只是评论。

...谢谢