1

我在 JQuery 上使用 keyup 函数在用户按下字符或其他东西时向 div 添加一个类,并在他们按下退格键时删除一个类。但是 keyup 函数有一个小的延迟。我试过使用按键,它没有延迟,但是,它没有检测到退格,所以我不能使用它。

有谁知道如何停止 keyup 的延迟或我可以使用的替代功能?

4

3 回答 3

1
$(function(){

    $('html').keyup(function(e){

        var d1 = new Date().getMilliseconds();

        if(e.which === 8){
            alert('Backspace pressed, delay: ' + new Date().getMilliseconds() - d1) + 'ms';
        }   

    });
});
于 2012-09-22T22:12:11.860 回答
1

你在考虑这样的事情吗?

$(document).ready(function() {
    var timer,
        container = $('p');

    function doSomething()
    {
        container.text(new Date());
    }

    $('#find').keyup(function() {
        clearTimeout(timer);
        timer= setTimeout(doSomething, 200);
    });
 });  

演示:http: //jsfiddle.net/tXJAz/

于 2012-09-22T22:26:35.183 回答
1

但是 keyup 函数有一个小的延迟。我试过使用按键,它没有延迟,但是,它没有检测到退格,所以我不能使用它。

keyup您遇到的小延迟是由于在用户释放密钥之前不会触发的事实。

如果您不想延迟,请改用keydown

$('#target').keydown(function(eventData) {

    if(eventData.which === 8){
        // Backspace was pressed
    } else {
        // another key was pressed
    }
});

演示

于 2012-09-22T22:35:55.050 回答