5

HTMLページに入力があり、人が何かを入力します。入力を停止するたびに関数が呼び出されるようにしたいのです。onkeypressイベントについては知っていますが、文字を入力するたびに呼び出されます。これが私が欲しいものの例です:

  1. 人は入力に「これはテストです」と入力します
  2. 人が入力をやめた後、関数foo()を呼び出す必要があります
  3. 人は入力に何か他のものを入力します
  4. 人が入力をやめた後、関数foo()を呼び出す必要があります
  5. 繰り返す....

これは可能ですか?

どうもありがとう!

4

4 に答える 4

11

onkeyupeventを聞いてください。タイムアウトが開始され(「停止」を一定の時間として定義する必要があります。そうしないと、キーアップのたびに呼び出されます)、タイムアウトで関数を実行します。

タイマーの実行中にonkeydownが呼び出された場合は、停止します。

何かのようなもの...

var timer;

function onKeyUpHandler(e){
    timer = setTimeout("foo()", 500)    
}

function onKeyDownHandler(e) {
    clearTimeout(timer);
}

このコードが正確にどのように見えるかは、どこでどのように使用しているかによって異なります...それを行う方法を示すためだけです。

于 2012-06-23T20:45:06.030 に答える
0

まず、「キーアップ」イベントをキャプチャし、「stoppedTyping」変数をtrueに設定します。次に、タイマーを設定します(これを「入力停止」イベントと見なすまでの待機時間)。

タイマーが切れる前に「キーダウン」イベントをキャプチャする場合は、「stoppedTyping=false」を設定します

タイマーが期限切れになると、タイマーコールバックは「stoppedTyping」の値をチェックできます。trueの場合、ユーザーは入力を停止しました(より正確には、タイマーの期間中、新しい文字を入力していません)。falseの場合、入力を停止していません。タイマーの実行中に、少なくとももう1つの文字を入力している必要があります。

于 2012-06-23T20:48:24.257 に答える
0

よく理解できれば、「タイピングをやめる」とは「一定時間キーストロークがない」という意味です。この場合、タイマーを使用する必要があります:http: //jsfiddle.net/xnghR/1/

于 2012-06-23T20:49:10.833 に答える
0

onKeyPressで開始/再起動するようにjavascriptタイマーを設定するだけです。次に、「入力を停止する」定義の長さを定義し、スクリプトを実行します。

于 2012-06-23T20:45:09.477 に答える