gpt4 book ai didi

jquery - 我可以延迟 jquery 的 keyup 事件吗?

转载 作者:行者123 更新时间:2023-12-03 22:17:46 25 4
gpt4 key购买 nike

我正在使用 rottentomatoes 电影 API 和使用 Bootstrap 2.0 的 Twitter 的 typeahead 插件。我已经能够整合 API,但我遇到的问题是,在每次 keyup 事件之后都会调用 API。这一切都很好,但我宁愿在短暂的停顿后调用电话,允许用户先输入几个字符。

这是我当前在 keyup 事件后调用 API 的代码:

    var autocomplete = $('#searchinput').typeahead()
.on('keyup', function(ev){

ev.stopPropagation();
ev.preventDefault();

//filter out up/down, tab, enter, and escape keys
if( $.inArray(ev.keyCode,[40,38,9,13,27]) === -1 ){

var self = $(this);

//set typeahead source to empty
self.data('typeahead').source = [];

//active used so we aren't triggering duplicate keyup events
if( !self.data('active') && self.val().length > 0){

self.data('active', true);

//Do data request. Insert your own API logic here.
$.getJSON("http://api.rottentomatoes.com/api/public/v1.0/movies.json?callback=?&apikey=MY_API_KEY&page_limit=5",{
q: encodeURI($(this).val())
}, function(data) {

//set this to true when your callback executes
self.data('active',true);

//Filter out your own parameters. Populate them into an array, since this is what typeahead's source requires
var arr = [],
i=0;

var movies = data.movies;

$.each(movies, function(index, movie) {
arr[i] = movie.title
i++;
});

//set your results into the typehead's source
self.data('typeahead').source = arr;

//trigger keyup on the typeahead to make it search
self.trigger('keyup');

//All done, set to false to prepare for the next remote query.
self.data('active', false);

});

}
}
});

是否可以设置一个小的延迟并避免在每次按键后调用 API?

最佳答案

可以像这样轻松完成:

var autocomplete = $('#searchinput').typeahead().on('keyup', delayRequest);

function dataRequest() {
// api request here
}

function delayRequest(ev) {
if(delayRequest.timeout) {
clearTimeout(delayRequest.timeout);
}

var target = this;

delayRequest.timeout = setTimeout(function() {
dataRequest.call(target, ev);
}, 200); // 200ms delay
}

关于jquery - 我可以延迟 jquery 的 keyup 事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com