我有这个函数,它每秒获取输入值,但仅当用户停止输入时才获取。
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/