我有此函数,它每秒获取输入值,但仅当用户停止键入时才如此。

var timeout;
jQuery('#icName').keypress(function () {
    if (timeout) {
        clearTimeout(timeout);
        timeout = null;
    }
    timeout = setTimeout(makeSearch, 500);
});

var makeSearch = function () {
    console.log("value", document.getElementById('icName').value)

}


即使用户仍在键入,如何每秒获取一次值?

最佳答案

这不是很难。您只需重组代码,以便在没有计时器的情况下启动计时器,而不是在每次击键时都销毁旧计时器。这是您的相同代码,经过修改后可以执行以下操作:



var timeout;
jQuery('#icName').keydown(function () {
    if (!timeout) {
        timeout = setTimeout(function() {
            timeout = null;
            makeSearch();
        }, 500);
    }
});

var makeSearch = function () {
    console.log("value", document.getElementById('icName').value)
};

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<input id="icName" />





它还使用keydown而不是keypress,它将捕获所有击键。

关于javascript - 随着用户类型获取输入值,但每秒只能输入一次(如google的搜索栏中一样),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43781422/

10-15 15:10