Shu*_*ubh 4 jquery timer keyevent
我有类似的要求,如jquery-run-code-2-seconds-after-last-keypress.
现在,当我使用@brad代码时,它可以正常工作: -
$('input.username').keypress(debounce(function (event) {
console.log('Search keypress');
}, 250));
Run Code Online (Sandbox Code Playgroud)
但不是在: -
$('#search').keypress(function () {
debounce(function (event) {
console.log('Search keypress');
}, 2000);
});
Run Code Online (Sandbox Code Playgroud)
小提琴这里.任何帮助都会非常有用.
编辑:-
最初我做了类似下面的事情,这不是我想要的 -
$('#search').keypress(function () {
setTimeout(function () {
console.log('Search keypress');
}, 3000);
});
Run Code Online (Sandbox Code Playgroud)
编辑2: - 我想要一些非常类似于下面的东西: - (从那里复制的文字)
在输入3个字符后,它将在每次按键时搜索.
我想要的是
案例1:
用户输入测试
2秒后执行搜索
情况2:
用户输入测试
1秒通过
用户按t
2秒
测试通过搜索
案例3:
用户输入测试
1秒通过
用户按下t
1.5秒通过
用户按下i
1.5秒通过
用户按下n
1.5秒通过
用户按g
2秒通过
搜索执行测试
如您所见,搜索操作仅在按键后两秒内没有按键(或粘贴等)时执行.
我的基本想法是.
on keydown调用一个设置超时的函数,该函数还设置一个包含文本框中最后一个条目的变量.当超时到期时,它会检查框中的值以查看它是否与变量中的值匹配.
要使用超时去除它:
{BTW,使用keyup事件代替keypress,delete key不会触发keypress事件,请参阅:http://www.quirksmode.org/js/keys.html }
var timer;
$('#search').keyup(function () {
clearTimeout(timer);
timer = setTimeout(function (event) {
console.log('Search keypress');
var text = $('#search').val();
$('#textTobeSearched').text(text);
}, 2000);
});
Run Code Online (Sandbox Code Playgroud)
更新:这是2秒钟的去抖(等待2秒):小提琴
$('#search').keyup( debounce(function() {
console.log('Search keypress');
var text = $('#search').val();
$('#textTobeSearched').text(text);
}, 2000));
Run Code Online (Sandbox Code Playgroud)
$('#search').keypress(function() {
setTimeout(function() {
console.log('search keypress');
}, 2000);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11173 次 |
| 最近记录: |