javascript - 当用户类型获取输入值时,但每秒仅一次(如在谷歌的搜索栏中)

标签 javascript jquery

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

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 - 当用户类型获取输入值时,但每秒仅一次(如在谷歌的搜索栏中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43781422/

相关文章:

javascript - 如何将变量替换为JQuery选择器?

javascript - 为什么 jQuery 对象天生独一无二?

php - 如何设置具有多个数据数组的复选框

jquery button li a href 平滑向下滚动到底部

javascript - 这些 .less 文件从哪里加载?

javascript - 在 Firefox 开发者工具中看到错误的 JavaScript 堆栈跟踪(就像在 Chrome 中一样)

php - 如何在php中读取Excel文件数据并通过jquery发送

javascript - 鼠标悬停在菜单项上的 Bootstrap 下拉菜单应在右侧显示编辑/删除图标

javascript - jquery新版本的问题

javascript - keydown事件中的值没有改变