Jquery - 不在每个输入的符号上进行属性更改

时间:2017-03-18 07:20:04

标签: jquery

我只想显示一个“已更新”而不是多个(每个输入符号一个)。而且, - 因为这发送了ajax请求(未在代码中显示) - 我想“批量”发送更改的数据 - 而不是每个输入的符号(h,e,l,l,o)单独的ajax请求相反,“每个输入的单词的ajax请求...或每2秒...”以最小化Db负载。我可以使用change()但我还需要更新粘贴事件。这是代码:

   $(':input').bind("input propertychange", function() {

      var thiss = $(this);
      setTimeout(
        function() {
          thiss.after('<span>Updated!</span>');
        }, 2000);

    });

小提琴:https://jsfiddle.net/un3b5gks/

1 个答案:

答案 0 :(得分:0)

这是有需要的人的解决方案(感谢Andreas !!!):

function debounce(fn, delay) {
  var timer = null;
  return function() {
    var context = this,
      args = arguments;
    clearTimeout(timer);
    timer = setTimeout(function() {
      fn.apply(context, args);
    }, delay);
  };
}


$(':input').bind("input propertychange", debounce(function(event) {
  var thiss = $(this);

thiss.parent().append('<div class="updated" style="color: green">Updated!</div>').children(':last').hide().fadeIn(200).delay(1000).fadeOut(200);


}, 666));

小提琴:https://jsfiddle.net/un3b5gks/3/

获取有关“去抖动”的更多信息:

https://davidwalsh.name/javascript-debounce-function

https://remysharp.com/2010/07/21/throttling-function-calls