首页 > 解决方案 > 如何正确延迟onkeyup

问题描述

如果我想在输入中写入 149,运行方法 3 次,变量小时是 1,然后是 14,然后是 149,我正在寻找的是 changeHour 方法在我停止输入后 3000 毫秒后开始

function delay() {
  var timer = 0;
  return function(callback, ms) {
    clearTimeout(timer);
    timer = setTimeout(callback, ms);
  };
}

function changeHour(elem) {
  var id = $(elem).data("Id");
  var hour = $(elem).val();

  API_Loading.show();
  var url = BASE_PATH + "Stage/UpdateHourOfStage";

  API_ajaxWrapper_Library.ajax(url, {
    method: "POST",
    data: {
      id: id,
      hour: hour || 0
    },
    onDone: function(data) {
      API_Loading.hide();
      $("#saveIcon_" + id).show();
      $("#saveIcon_" + id).fadeOut(3000);
    },
    onFail: function(result) {
      API_Loading.hide();
      alert("Error");
    }
  });
}
<div>
  <div class="hour-num" style="background-color:#c4bed0;">Hours to go</div>
  <input class="hour-num decimal" type="text" value="Hour" data-id="Id" onkeyup="delay(changeHour($(this)), 3000)">
</div>

标签: javascript

解决方案


推荐阅读