これがiPhoneアクセスに焦点を合わせていることに関するあなたの編集を考慮して...
iPhoneは本当にそれほど強力ではありません。onchange
を使用するか、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);