带时间间隔的文本输入keyup事件

时间:2009-07-23 10:46:42

标签: javascript ajax

我有一个文本框。我想调用ajax回调函数,每个键盘都有2秒的延迟。

如何实现这个?

4 个答案:

答案 0 :(得分:1)

最后一次按键或每次按键后2秒?

<input type="text" id="txtBox" value="" width="200px"/>
<input type="text" id="txt" width="200px"/>

<script type="text/javascript">
    $(document).ready(function(){
    $("#txtBox").keyup(function(){
        setTimeout(function(){
            $("#txt").val($("#txtBox").val());//Here call ajax code
        },2000);
      });
    });
</script>

答案 1 :(得分:0)

使用jQuery,但可以随意替换自己选择的JS库:

var currentTimer = null;
input.bind('keyup', function () {
    if (!currentTimer) {
        currentTimer = true;
        setTimeout(function() {
            if (currentTimer) {
                currentTimer = null;

                // Do ajax call here
            }
        }, 2000);
    }
});

答案 2 :(得分:0)

我在这里使用jQuery,但你应该明白这一点:

function callAjax() {
    timer = null;

    // handle all your ajax here
}

var timer = null;

$('input').keyup(function () {
    // this will prevent you from reseting the timer if another key is pressed
    if (timer === null) {
        timer = setTimeout(callAjax, 2000);
    }
});

答案 3 :(得分:0)

如果你正在使用jQuery,你可以使用优秀的delayedObserver插件。