jQuery keyup 获取一次按下的所有字符

jQuery keyup get all the characters pressed at a time

如何一次按下所有字符?我有一个 500 毫秒的计时器,我想按下其中的所有字符。假设我按得非常快 "asd",那么我想使用 "asd" 作为搜索字符串,而不仅仅是 "d"。这是我的想法:

    var mytimer;
    $filter_container.on('keyup',function(key){
        // getting key from ascii
        var mykey = get_key_from_ascii(key);

        clearTimeout(mytimer);
        var $item = $(this);
        var $item2 = this;
        var ms = 500; // milliseconds
        mytimer = setTimeout(function() {
            // here i want to send the whole character set to search
            my_auto_complete($item, key, $item2);
        }, ms);
    });

这可能对你有用。每次按下一个键时它都会重置计时器,并且通过将计时器 var 包含在函数表达式中,您可以限制它的范围。它还会检查是否有空输入,如果有人在 500 毫秒之前点击外部,它会 运行。

(function () {

    var timer = 0,
        input = $('#search'),
        label = $('#search-label');

    function checkSearch() {
        var val = input.val();

        if (val) {
            doSearch(val);
        } else {
            label.text('');
        }
    }

    function doSearch(val) {
        label.text('Searching for ' + val);
    }

    input.on('keyup', function (e) {
        if (timer) {
            clearTimeout(timer);
        }
        timer = setTimeout(checkSearch, 500);
    });

    input.blur(function () {
        checkSearch();
    });

})();

Working Example

无需设置调用自动完成功能的时间间隔,您只需在keyup上获取返回值并将其发送到自动完成功能即可。

$("#kad").on('keyup',function(){
    
    $("#text").html($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="kad" /> 

<p id="text"> </p>

试试这个:

var mytimer;
var collectedKeys = [];

$filter_container.on('keyup',function(key){
    // getting key from ascii
    var mykey = get_key_from_ascii(key);

    // push key to array of keys
    collectedKeys.push(mykey);

    my_auto_complete($item, collectedKeys, $item2);

});

// after 500 ms, clear keys array
mytimer = setTimeout(function() {
        collectedKeys = [];
    }, 500);

每次按下不同的键时都会调用 keyUp。您需要按照您的意愿将所有按下的键连接到一个数组或字符串中,代码如下:

var str="";
var mytimer;
    $('body').on('keyup',function(e){
        // getting key from ascii

        str = str + String.fromCharCode(e.which);

        mytimer = setTimeout(function() {
            // here i want to send the whole character set to search
           alert(str);
        }, 500);
    });

我已经测试了 Fiddle Here 点击右下角的面板然后按几个键检查