JavaScript jQuery 延迟输入

标签 javascript jquery html ajax

我有一个 html 表,它通过 jQuery Ajax 从数据库获取其值。 像这样的事情

<div id="tableId"></div>

比java脚本:

function showUser(rowsToShow) {
  request = $.get("showTableFunction.php", {
    q: rowsToShow
  });

  request.done(function(response, textStatus, jqXHR) {
    $("#tableId").html(response);
  });

  request.fail(function(jqXHR, textStatus, errorThrown) {
    console.log("The following error occurred: " + textStatus, errorThrown);
  });
}

该表有一个 oninput 函数,每次用户更改其中一个单元格的值时都会更新数据库。

function updateCell(data) {
  var cellId= data.id;
  var editValue = $(data).text();

  requestEdit = $.post("editCellFunction.php", {
    cellId: cellId,
    editValue: editValue,
  });

  requestEdit.done(function(response, textStatus, jqXHR) {
    console.log(textStatus);
    });

  requestEdit.fail(function(jqXHR, textStatus, errorThrown) {
    console.log("The following error occurred: " + textStatus, errorThrown);
  });

}

然而,这会给网站带来很大的负载。 所以我想添加一个延迟,只有在 5 秒内没有新输入时才会执行 Ajax 请求

非常感谢它有时可以帮助解决这个问题。

最佳答案

我实际上刚刚实现了一些非常相似的东西。基本上,您希望通过 setTimeout 设置一个计时器,该计时器在收到输入时启动并重置。

const input = document.getElementById('input');
const output = document.getElementById('output');
let timer = null;

function updateDatabase() {
  // your code here, but for this example, I'll just change some text.
  output.textContent = input.value;
}

function restartTimer() {
  clearTimeout(timer);
  timer = setTimeout(updateDatabase, 300);
}

input.addEventListener('input', restartTimer);
<input type="text" id="input">

<p>Sent:</p>
<p id="output"></p>

关于JavaScript jQuery 延迟输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59204338/

相关文章:

javascript - 取决于所选文本的动态扩展上下文菜单

javascript - 来自静态文件的 Angular 用户 JSON 请求

javascript - 如何命名返回数组?

javascript - Vue.js 与 $this.refs?

php - 在使用带有参数 Css 的 where 条件后,在 laravel 中不起作用

javascript - 有没有办法在 gojs 面板中放置下拉菜单?

javascript - HTML 按钮计数

javascript - 通过 toastr 访问 FCM 参数

jquery - 如何在 jquery 中多次更改文本?

html - 垂直对齐 block 级元素内的 block 级元素