我想在特定时间段后只进行一次输入更改。
在下面的代码中假设我输入3个字符,它在1500毫秒后三次警告。
我只想提醒一次。
这是我的js代码。
jQuery("#width").on('input',function(){
setTimeout(function(){
alert('hello');
},1500)
});
答案 0 :(得分:4)
你需要去抖动功能。要么使用lodash _.debounce,要么写自己的简单。然后像这样使用它:
jQuery("#width").on('input', debounce(function() {
alert('hello')
}, 1500))
简单的去抖功能可能如下所示:
function debounce(callback, delay) {
var timeout
return function() {
var args = arguments
clearTimeout(timeout)
timeout = setTimeout(function() {
callback.apply(this, args)
}.bind(this), delay)
}
}
这是一个演示:
jQuery("#width").on('input', debounce(function() {
alert('hello');
}, 1500));
function debounce(callback, delay) {
var timeout
return function() {
var args = arguments
clearTimeout(timeout)
timeout = setTimeout(function() {
callback.apply(this, args)
}.bind(this), delay)
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="width" />