我有一个textarea,人们可以自然地输入一些文本,因此我想这样做,以便不时提出AJAX请求,以获取有关textarea的内容的一些建议(例如堆栈溢出的Related Questions,但是对于textarea,而不是文本输入)。问题是我不能在每次按键时都发出AJAX请求(这是无用的,而且非常消耗资源),而且我不确定这样做的最有效方法是什么(每X字?每X秒一次) ? 或者是其他东西?)。
这样做的最佳方法是什么?
先感谢您。
您可以将keypress事件处理程序与结合使用,setTimeout以便在按键后发送Ajax请求一段指定的时间,如果在计时器完成之前发生另一次按键,则取消并重新启动计时器。假设您有一个id为“ myTextArea”的textarea和一个名为的Ajax回调函数doAjaxStuff:
keypress
setTimeout
doAjaxStuff
function addTextAreaCallback(textArea, callback, delay) { var timer = null; textArea.onkeypress = function() { if (timer) { window.clearTimeout(timer); } timer = window.setTimeout( function() { timer = null; callback(); }, delay ); }; textArea = null; } addTextAreaCallback( document.getElementById("myTextArea"), doAjaxStuff, 1000 );