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