我现在有一个文本框的keyup事件 绑定了ajax请求,就是每次用户输入什么都会请求后台,现在想实现的是如果用户连续输入时将连续输入作为一次请求,以间隔时间300毫秒为例,如果300毫秒以内,输入的作为一次请求,想问问大家有没有好的实现方法,我现在用javascript和一个hiddenfield实现了,但是想看看有没有更好的办法。

解决方案 »

  1.   

    你要是实现自动完成的功能,需要每次请求,如果只是验证输入,则可以在onblur事件里面实现
      

  2.   

    JS里面有一个方法:setTimeOut()
    自己查下用法吧
      

  3.   


    我想问一下,如果用户输入a的时候我让他延时300毫秒,紧接着输入b,这时候怎么把之前输入a的时候的请求cancel?
      

  4.   


    用意很简单,就是希望把用户输入的abc作为一次请求,而不是输入a的时候请求,输入b的时候又请求浪费性能
      

  5.   

    我自己做了一个测试
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript">
            function TestTimeOut() {
                setTimeout(function () {
                    alert("a");
                }, 3000);
                // var t = setTimeout("alert('5 seconds!')", 3000);
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <p></p>
            <input id="Button2" onclick="TestTimeOut();" type="button" value="button" />
        </div>
        </form>
    </body>
    </html>
    发现只要点击几次按钮就会alert几次,就是说 延时的代码不会被新请求覆盖、、
      

  6.   


    onblur,离开文本框的时候,请求不行吗?
      

  7.   

    不行,google搜索的焦点一直在文本框
      

  8.   

    比较好的是不要写keyup事件,可以写个300毫秒执行一次的函数,每次判断输入内容有没有变化,有变化就提交
      

  9.   

    那请教下这个函数要怎么实现? 绑定到哪? $(document).ready(function () {
       setTimeout(
         function(){
           //code
         },
       300);
    }这样?
      

  10.   

    change事件能满足你的要求不。
      

  11.   

    change事件好像要按回车才会触发吧?
      

  12.   

    setTimeout和clearTimeout可以实现,感谢大家参与