javascript - AJAX:延迟在表单字段中输入搜索

标签 javascript ajax forms input

<分区>

在我的网站上,我使用 JavaScript/AJAX 进行搜索并在用户仍在键入时显示结果。

HTML(正文):

<form action="" method="post" accept-charset="utf-8">
    <p><input type="text" name="q" id="q" value="" onkeyup="doSearch(this.value)" /></p>
</form>

JavaScript( header ):

function doSearch(text) {
    // do the ajax stuff here
    // call getResults.php?search=[text]
}

但这可能会导致大量请求到达服务器。

因此我想通过设置延迟来减轻服务器的负担:

每当触发 onkeyup 事件时,函数 doSearch() 应显示“ajax 加载图形”并等待 2 秒。仅当在这 2 秒内事件未再次触发时,才应从 PHP 文件中获取结果。

有什么办法吗?请问你能帮帮我吗?提前致谢!

最佳答案

var delayTimer;
function doSearch(text) {
    clearTimeout(delayTimer);
    delayTimer = setTimeout(function() {
        // Do the ajax stuff
    }, 1000); // Will do the ajax stuff after 1000 ms, or 1 s
}

关于javascript - AJAX:延迟在表单字段中输入搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7849221/

相关文章:

javascript - 使用 jQuery 添加/删除 <li> 元素

javascript - 修复 Firefox/Chrome 中的 SVG 渲染差异

javascript - 如何从ajax GET查询中获取数据

PHP 文件上传无法使用 $_FILES 变量,它始终是未定义的

javascript - 在 Firefox 中为父元素设置不显示时输入字段模糊事件未触发

javascript - 将 HTML 输入更改为 textarea 并复制所有事件

javascript - 如何避免出现 "No ' Access-Control-Allow-Origin' header ...“javascript 错误

javascript - 通过 jquery ajax post 下载文件

php - 如何在 FAPI 函数之外获取 $form_state?

javascript - 使用 jquery 附加到 href 值的末尾