Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在执行AJAX请求onkeyup之前,请等待1秒_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在执行AJAX请求onkeyup之前,请等待1秒

Javascript 在执行AJAX请求onkeyup之前,请等待1秒,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个ajax请求,每当用户在某个文本区域按下某个按钮(写入文本)时就会执行。这已经很好了(顺便说一句,这是一个搜索过滤功能),但在每次击键后执行过滤不是一个好主意。所以我在考虑做一件延迟的事情。因此,ajax请求只有在用户按下最后一个按钮至少1秒后才会执行。我怎样才能做到这一点 <textarea id="text" name="text" onkeyup="Search()"</textarea> function Search() { $.ajax({...

我有一个ajax请求,每当用户在某个文本区域按下某个按钮(写入文本)时就会执行。这已经很好了(顺便说一句,这是一个搜索过滤功能),但在每次击键后执行过滤不是一个好主意。所以我在考虑做一件延迟的事情。因此,ajax请求只有在用户按下最后一个按钮至少1秒后才会执行。我怎样才能做到这一点

<textarea id="text" name="text" onkeyup="Search()"</textarea>

function Search()
{
    $.ajax({...
    ...
}

您可以使用
setTimeout
将操作延迟设定的毫秒数。如果有人快速键入,您还可以清除超时以防止请求排队。试试这个:

var timer;
function Search() {
    clearTimeout(timer) // clear the request from the previous event
    timer = setTimeout(function() {
        $.ajax({
           // ...
        });
    }, 200);
}

注意:我延迟了200毫秒,这通常是一个人输入多个键的足够时间,但足够快,用户界面更新不会显得太慢。

也许你应该设置
定时器,并返回
设置超时时间
:)@Holt谢谢!输入太快,需要更多延迟;)谢谢,这真的解决了我的问题!:)对不起,我是初学者,但我学得很快@egyeneskanyar没有必要为自己是初学者而道歉-我们都从某个地方开始:)在
Search()中
var timer=
不应该只是
timer=
var timer
将在函数范围内声明超时,而不是整个脚本,对吗?