HTMLページに入力があり、人が何かを入力します。入力を停止するたびに関数が呼び出されるようにしたいのです。onkeypressイベントについては知っていますが、文字を入力するたびに呼び出されます。これが私が欲しいものの例です:
- 人は入力に「これはテストです」と入力します
- 人が入力をやめた後、関数foo()を呼び出す必要があります
- 人は入力に何か他のものを入力します
- 人が入力をやめた後、関数foo()を呼び出す必要があります
- 繰り返す....
これは可能ですか?
どうもありがとう!
HTMLページに入力があり、人が何かを入力します。入力を停止するたびに関数が呼び出されるようにしたいのです。onkeypressイベントについては知っていますが、文字を入力するたびに呼び出されます。これが私が欲しいものの例です:
これは可能ですか?
どうもありがとう!
onkeyupeventを聞いてください。タイムアウトが開始され(「停止」を一定の時間として定義する必要があります。そうしないと、キーアップのたびに呼び出されます)、タイムアウトで関数を実行します。
タイマーの実行中にonkeydownが呼び出された場合は、停止します。
何かのようなもの...
var timer;
function onKeyUpHandler(e){
timer = setTimeout("foo()", 500)
}
function onKeyDownHandler(e) {
clearTimeout(timer);
}
このコードが正確にどのように見えるかは、どこでどのように使用しているかによって異なります...それを行う方法を示すためだけです。
まず、「キーアップ」イベントをキャプチャし、「stoppedTyping」変数をtrueに設定します。次に、タイマーを設定します(これを「入力停止」イベントと見なすまでの待機時間)。
タイマーが切れる前に「キーダウン」イベントをキャプチャする場合は、「stoppedTyping=false」を設定します
タイマーが期限切れになると、タイマーコールバックは「stoppedTyping」の値をチェックできます。trueの場合、ユーザーは入力を停止しました(より正確には、タイマーの期間中、新しい文字を入力していません)。falseの場合、入力を停止していません。タイマーの実行中に、少なくとももう1つの文字を入力している必要があります。
よく理解できれば、「タイピングをやめる」とは「一定時間キーストロークがない」という意味です。この場合、タイマーを使用する必要があります:http: //jsfiddle.net/xnghR/1/
onKeyPressで開始/再起動するようにjavascriptタイマーを設定するだけです。次に、「入力を停止する」定義の長さを定義し、スクリプトを実行します。