Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript jQuery延迟oninput_Javascript_Jquery_Html_Ajax - Fatal编程技术网

JavaScript jQuery延迟oninput

JavaScript jQuery延迟oninput,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个html表,它通过jQueryAjax从数据库中获取其值。 像这样的 <div id="tableId"></div> 该表有一个oninput函数,每当用户更改其中一个单元格的值时,该函数都会更新数据库 function updateCell(data) { var cellId= data.id; var editValue = $(data).text(); requestEdit = $.post("editCellFunction.php

我有一个html表,它通过jQueryAjax从数据库中获取其值。 像这样的

<div id="tableId"></div>
该表有一个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');
设定时器为空;
函数updateDatabase(){
//这里是您的代码,但对于这个示例,我只更改一些文本。
output.textContent=input.value;
}
函数restartTimer(){
清除超时(计时器);
定时器=设置超时(updateDatabase,300);
}
addEventListener('input',restartTimer)

发送:


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

const input=document.getElementById('input');
const output=document.getElementById('output');
设定时器为空;
函数updateDatabase(){
//这里是您的代码,但对于这个示例,我只更改一些文本。
output.textContent=input.value;
}
函数restartTimer(){
清除超时(计时器);
定时器=设置超时(updateDatabase,300);
}
addEventListener('input',restartTimer)

发送:

Javascript的
setTimeout(functionToCallAfterTimeout,timeoutims)
应该适用于您……Javascript的
setTimeout(functionToCallAfterTimeout,timeoutims)
应该适用于您。。。
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);
  });

}