【发布时间】:2016-05-11 05:12:51
【问题描述】:
我想在输入值完成后 3 秒后监听输入字段并运行处理输入值到输出值。
<html>
<head>
<meta charset="utf-8">
<script src="jquery.js"></script>
<script>
$(document).ready(function() {
$('.input').on('input', function() {
var value = $(this).val();
console.log('Triggered input: ' + value);
setTimeout(function() {
console.log('Changing output to: ' + value);
$('.output').text(value); // example operation
}, 3000);
});
});
</script>
</head>
<body>
<input type="text" class="input" />
<hr>
<div class="output">...</div>
</body>
</html>
但上面的代码将处理每个字符,而不是预期的完整字符串。
换句话说。我想输入“abc”,这个值应该在延迟后只处理一次“abc”,而不是像现在这样,作为“a”,然后是“ab”,然后是“abc”。
如何解决?
【问题讨论】:
-
这是因为每次按键都会触发
input事件。您需要debounce超时(已接受答案的第二部分显示)
标签: javascript jquery timeout delay