【问题标题】:Do an event when user has stopped typing into a text input当用户停止输入文本输入时执行事件
【发布时间】:2014-07-21 09:24:14
【问题描述】:

我想在用户完成文本输入后执行操作,但忽略删除键。

我可以使用下划线的debounce 函数“等待”用户完成输入文本。

我还需要听以确保没有使用删除键,这就是我的代码似乎出现故障的地方。

这是我尝试过的http://jsfiddle.net/4Wn8L/

var lazyChange = _.debounce(function(e){
    if (e.keyCode != 8) {
        console.log('User entered a key that wasnt backspace!');
    }
}, 300);

$('#appPreview').on('keyup', 'input', lazyTripChange);

【问题讨论】:

标签: javascript jquery underscore.js


【解决方案1】:

你可以这样做:

<input type="search" class="lazy-search">

$(document).ready(function() {

  var thread = null;
  var delayMs = 500;

  function doSearch(str) {
    console.log('search: ' + str);
  }

  $('.lazy-search').keyup(function(e) {
    if (e.keyCode != 8) {
        clearTimeout(thread);
        var target = $(this);
        thread = setTimeout(function() {
            doSearch(target.val());
        }, delayMs); 
    }
  });

});

小提琴:http://jsfiddle.net/HfY2N/1/(检查控制台)

“当用户按下一个键时创建一个超时,它会在 n 毫秒后进行搜索,但如果用户在该计数过期之前再次按下一个键,则清除它并创建另一个”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 2021-05-29
    • 2011-03-07
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多