0

私はウェブサイト用のカスタム検索エンジンを構築しており、キーアップイベントでAJAXを介して検索が行われるため、入力を開始すると(2文字以上入力し、文字列がトリミングされた後)、サーバーへのAJAX呼び出しが行われます.

それは完全に機能しますが、私が考えていたシナリオが 1 つあります。4 つまたは必要な数の文字を連続して入力し始めると、入力した文字と同じ数の呼び出しが行われます。たとえば、10 文字を入力すると、多くのリクエストが行われます。

この場合、そのような動作が発生したときに以前に開始されたものをすべて停止し、狂ったように入力した後に検索を開始する簡単な方法があるかどうかを考えていました (:

4

3 に答える 3

1

0.5 秒から 1 秒の間何も入力されなくなるまで、Ajax 経由で呼び出しを遅らせるだけです。その後、setTimeout などをキャンセルするだけです。

-- @Tejs

于 2012-10-30T15:32:03.173 に答える
1

そのためにアンダースコアデバウンスを使用できます。関数の代わりにキーアップイベントがアンダースコアの関数を呼び出すようにします。これにより、アンダースコアはいつ関数を呼び出すかを知ることができます

于 2012-10-30T15:32:14.010 に答える
0

前に述べたように、特定の指定された遅延の後に関数を実行する例を次に示します。遅延が経過していないときにメソッドが再度呼び出されると、元のタイムアウトがクリアされ、新しいタイムアウトが再度設定されます。

これはクリーンなソリューションであり、jQuery を必要とせず、使い方を変更するだけです。

ユーザーが入力をやめるまで .keyup() ハンドラを遅らせる方法は?

于 2012-10-30T15:57:43.843 に答える