考虑到您对此的编辑重点是 iPhone 访问......
iPhone确实没有那么强大的功能。你会更好地使用onchange
or onblur
代替onkeydown
.
Dave 答案的另一种选择是等待用户暂停(例如 5 秒):
var textarea = document.getElementById('textarea');
function checkTextArea() {
if (textarea.value /* ... */) {
/* ... */
}
}
textarea.keyDownTimeout = null;
textarea.onkeydown = function () {
if (textarea.keyDownTimeout) clearTimeout(textarea.keyDownTimeout);
textarea.keyDownTimeout = setTimeout(checkTextArea, 5000);
};
这应该在第一次按键时设置计时器,为每个连续的按键停止并重新创建计时器。最后在用户停止打字 5 秒后调用。
另外,请注意后面缺少括号checkTextArea
。这将给setTimeout
函数的引用与它的引用return
.
您还可以在函数中进行设置,以便更轻松地用于多个元素:
function setPauseTimer(element, timeout, callback) {
var timer = null;
element.onkeydown = function () {
if (timer) clearTimeout(timer);
timer = setTimeout(function(){ callback(element); }, timeout);
};
}
function checkTextArea(textarea) { /* moved from global to argument */
if (textarea.value /* ... */) {
/* ... */
}
}
setPauseTimer(document.getElementById('textarea'), 5000, checkTextArea);