当用户停止输入文本输入时执行事件

时间:2014-07-21 09:24:14

标签: javascript jquery underscore.js

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

我可以等待"让用户使用下划线的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);

1 个答案:

答案 0 :(得分:0)

你可以这样做:

<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/(检查控制台)

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