Javascript 几毫秒后使用jQuery获取输入值

Javascript 几毫秒后使用jQuery获取输入值,javascript,jquery,ajax,Javascript,Jquery,Ajax,我想获取输入字段的值并发送一个ajax请求。如果我使用keyup、keypress或change,该值将立即可用并发送请求。我想等待用户,例如等待1或2秒钟,以便他键入整个word,然后发送ajax请求。 我的代码是这样来获取vlaue。谢谢 var timeout = window.setTimeout(function() { $('input#search').keyup(function() { var key = $("#search")

我想获取输入字段的值并发送一个ajax请求。如果我使用keyup、keypress或change,该值将立即可用并发送请求。我想等待用户,例如等待1或2秒钟,以便他键入整个word,然后发送ajax请求。 我的代码是这样来获取vlaue。谢谢

    var timeout = window.setTimeout(function() {
        $('input#search').keyup(function() {
            var key = $("#search").val();
            console.log(key);
        });

    }, 1000);
    clearTimeout(timeout);

每次调用函数时,都应清除超时并设置一个新的超时,请尝试以下操作:

(function () {
   var timeout = {};
   var update = function () {
     clearTimeout(timeout);
     timeout = setTimeout(function () {
       var key = $('#search').val();
       console.log(key);
     }, 1000);
   };

   $('input#search').keyup(update);
   $('input#search').change(update);
 }());

您需要使用计时器,然后使用clearTimeout将其重置为用户类型。这段代码将执行您想要的操作,下面是一个示例


如果您希望提供积极的用户体验,那么这不是最好的方法。您永远不能仅仅因为等待了任意秒数就确定用户已经完成了键入。有些人打字非常慢。您应该考虑触发Ajax请求的窗体旁边的按钮,或者监听文本字段中的“输入”键,然后发出请求。谢谢您的评论。我添加了提交按钮,但我也想在用户输入某些东西时触发Ajax请求。我只想在1秒或2秒后触发ajax请求。@VCode:google search autocomplete可以在没有按钮的情况下工作我没有意识到你可以调用像
$(Start)这样的函数。这样做比开始()有什么好处吗;?谢谢@frenchie,这正是我想要的。@delighteddod:writing$(Start)是writing$(document)的缩写。准备好(Start)
var Timer;

function Start() {

    $('#TheInput').keyup(function () {

        clearTimeout(Timer);
        Timer = setTimeout(SendRequest, 1000);
    });
}


function SendRequest() {

    var key = $("#TheInput").val();    
    alert(key);
}

$(Start);