[解決済み] [Solved] ユーザーの入力が終わるまで、.keyup()ハンドラを遅延させる方法は?
2022-03-23 07:14:51
質問
検索フィールドがあります。今はすべてのキーに対応する検索を行います。もし誰かが "Windows "と入力したら、AJAXですべてのキー入力に対して検索を行います。「W", "Wi", "Win", "Wind", "Windo", "Window", "Windows "などです。
私は遅延を持たせたいので、ユーザーが200msの間タイピングを止めたときだけ検索します。
には、このためのオプションはありません。
keyup
関数を試してみました。
setTimeout
しかし、うまくいきませんでした。
どうすればいいのでしょうか?
どのように解決するのですか?
私はこの小さな関数を同じ目的で使っています。ユーザーが一定時間入力を止めた後に関数を実行したり、次のように高い確率で発火するイベントで使用します。
resize
:
function delay(callback, ms) {
var timer = 0;
return function() {
var context = this, args = arguments;
clearTimeout(timer);
timer = setTimeout(function () {
callback.apply(context, args);
}, ms || 0);
};
}
// Example usage:
$('#input').keyup(delay(function (e) {
console.log('Time elapsed!', this.value);
}, 500));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label for="input">Try it:
<input id="input" type="text" placeholder="Type something here..."/>
</label>
どのように機能するか
は
delay
この関数が返すラップされた関数は、内部で個々のタイマーを処理し、各実行でタイマーは与えられた遅延時間で再起動されます。
タイマーが終了すると、コールバック関数が実行され、元のコンテキストと引数(この例では、jQuery のイベントオブジェクトと、DOM 要素を
this
).
アップデート 2019-05-16
モダンな環境に対応するため、ES5とES6の機能を使って関数を再実装しました。
function delay(fn, ms) {
let timer = 0
return function(...args) {
clearTimeout(timer)
timer = setTimeout(fn.bind(this, ...args), ms || 0)
}
}
実装をカバーするのは テストセット .
より洗練されたものをお探しなら、jQuery の タイプウォッチ プラグインを使用します。
関連
-
[解決済み】JavaScript "Uncaught TypeError: object is not a function" 連想性の質問
-
[解決済み】SyntaxError: ChromeのJavascriptコンソールでUnexpected Identifierが発生する。
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】SyntaxError: 期待された式が、'<'を得た。
-
[解決済み】中央値の計算 - javascript
-
[解決済み] ページを再読み込みせずにURLを変更するにはどうすればよいですか?
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] セレクタの子を取得する方法は?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】BootstrapのCollapseが折りたたまれない
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み】WebpackとBabelで「このファイルタイプを扱うには適切なローダーが必要な場合があります。
-
[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。
-
[解決済み】 Uncaught Error: Invariant Violation: 解決済み】 Uncaught Error: Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function but got: object.
-
[解決済み】Redux TypeError: 未定義のプロパティ 'apply' を読み取れない
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み] キーアップ時ではなく、入力終了時にjavascriptの関数を実行しますか?