2

我通过 js 搜索我的网站。

他们的代码可能看起来像:有一个表单,当 keyup 事件发生时,它会将 post 发送到一个文件并从该文件中检索数据到一个 div 疯狂的 html 中。

但这自己有麻烦了。我发现“a”的示例大约有 3000 个结果。例如,花一秒钟发送帖子。所以我现在按“c”将帖子发送到文件是“ac”并且有100个这样的结果需要0.3秒。例如,当我按字母“a”到“c”0.2 秒时,它应该在 0.5 秒时显示结果“ac”。然后 0.5 秒后它是“a”的结果。~> 找到“ac” 找到“a” 那么现在当你按“c”然后它停止发送值为“a”的帖子时,你会如何发送值为“ac”的帖子。

<form method="post" onsubmit="return checkForm(this.form)">
<div class="search padding">
    <input type="text" id="searchbox" name="manga_name" class="input" value="Tìm truyện muốn đọc ..." onfocus="if (value =='Tìm truyện muốn đọc ...'){value =''}" onblur="if (value ==''){value='Tìm truyện muốn đọc ...'}" />
    <input type="submit" value=" " id="searchsubmit" class="go"/>
</div>
    </form>

<div id="result"></div>

和脚本:

<script>
$('#searchbox').keyup(function() {
 search();
});

function search() {
var keyword = $('#searchbox').val();
if (keyword != "") {
$('#result').html(loadingText);
$('#result').css('display', 'block');
$.post('/search/',{"keyword":keyword}, function(data){
if (data != "")
{
$('#result').html(data);
}
else
{
$('#result').html('');
$('#result').css('display', 'none');
}
});
}
else {
$('#result').html('');
$('#result').css('display', 'none');
}
}
</script>
4

2 回答 2

1
// use to delay the callback execution
// so your search will be executed only you stop typing after 0.5(500 ms for example) second
var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout(timer);
    timer = setTimeout(function() {
      callback();
    }, ms);
  }
}());

$('#searchbox').keyup(delay(search, 500));
于 2012-06-01T07:08:36.077 回答
0

你可以试试;

var timer = null;

$("#text_box").keyup(function() {
  if(timer) {
    clearTimeout(timer);
  }

  timer = setTimeout(search, 1000);
});

这里有一个类似的问题,我之前问过。在发布问题之前,请务必在 stackoverflow 中进行搜索。

于 2012-06-01T11:22:35.773 回答