我正在编写一些代码,尝试使用即时搜索结果在我的网站中集成bing搜索API.我使用 jquery的keyup函数将数据发送到我的服务器端脚本,然后获取bing搜索xml并显示结果. 我担心的是,我将为我的
我担心的是,我将为我的脚本制作太多不必要的命中.
有人可以看看这个并告诉我如何在键盘作为计时器之间延迟1秒?所以它只会每隔一秒左右更新一次结果?
这是我到目前为止创造的,但我不知道它是否正确???
<script type="text/javascript"> var delay = (function() { var timer = 0; return function(callback, ms) { clearTimeout(timer); timer = setTimeout(callback, ms); }; })(); function reloadsearch() { var searchterms = $('#q').val(); if (searchterms.length >= 3) { delay(function() { var data = 'source=ajax&q=' + searchterms; $.ajax({ type: "GET", url: "results/", data: data, success: function(html) { if (html !== '') { $("#search-results").html(html); $("#search-results").fadeIn(500); } } }); }, 250); } else { $("#search-results").fadeOut(250); } }; $('#q').keyup(function() { reloadsearch() }); $(document).ready(function() { reloadsearch() });下面是一个输入框的示例,该输入框以较慢的速率输入和搜索输入.
http://jsbin.com/ebela4/8/edit
这个例子没有做ajax片段,但你会明白这个想法.尝试尽可能快地输入输入框.它将以延迟的速率更新搜索框.它记得状态是“脏”,然后必要时刷新.
希望这能让你开始.
短发