私はGoogleのように検索するので、入力したテキストを入力するとすぐに入力できます。しかし、私はそれが好きではありません。私はそのようなものを使用します$("TEXTINPUT").keyup(function() {
。ユーザーが非常に高速に入力すると、データベースに何度も接続します。それは、ユーザーが1-2秒間入力を停止したときにのみPHPファイルに接続することは可能ですが、即座にはできませんか?私はjQueryでそれを行う必要があります。ありがとう。ここでjQueryイベントのコールバックを抑制する方法は?
答えて
試してみてください。
var time_out;
$("TEXTINPUT").keyup(function(){
clearTimeout(time_out);
time_out = setTimeout(your_function, 500);
}
function your_function()
{
/*CHECK DATABASE*/
}
が、私は通常、それに近づく方法は次のとおりです。
$(function(){
var tiTO, jqXHR;
$('textinput').keyup(function(){
if (tiTO) clearTimeout(tiTO);
if (jqXHR && jqXHR.abort) jqXHR.abort();
tiTO = setTimeout(function(){
jqXHR = $.ajax({....});
//Ajax call to PHP
},2000);
});
});
それぞれからkeyupは、タイムアウトをリセットし、アクティブなAJAXを中止します。
あなたがUnderscore Libraryを使用している場合、それはこのような単純なのです:下線サイトから
$("TEXTINPUT").keyup(_.throttle(function() {...}, 150));
ドキュメント:
スロットル _.throttle
を繰り返し を起動したときに、唯一実際に高々一回待つミリ秒ごとに をラップ関数を呼び出します、という、機能の絞られたバージョンを返します(機能、待ちます)。 があなたに追いつくよりも速く発生するレート制限イベントに役立ちます。
デバウンス _.debounce(機能、待つ)
後 ミリ秒が持って待つまでその実行を延期するデバウンス関数を呼び出す:
も
debounce
機能があります最後の機能が であることから経過した時間。入力が到着しなくなった後に発生するような動作を実装する場合に便利です。 例えば:、値下げコメントのプレビュー をレンダリングするウィンドウが がリサイズされ停止した後に...
+1 Underscore :) –
問題は1つだけです。コールバックを抑制する必要がある場合はどうしたらいいですか?誰もこれを行うためのライブラリを必要としません。ブラウザのJavaScriptの基本的な理解だけです。 –
この機能は多少underscore.jsのように、余分な依存せずに行動するレイアウトを再計算します。また、呼び出されたスコープと引数をラップされた関数に渡します。 YoannMの答えとは異なり、これは外部変数を使用しない自己完結型のコールバックを返します(EG、必要な回数だけ使用します)。
function throttle (func, wait) {
return function() {
var that = this,
args = [].slice(arguments);
clearTimeout(func._throttleTimeout);
func._throttleTimeout = setTimeout(function() {
func.apply(that, args);
}, wait);
};
}
使い方はunderscore.jsライブラリとほぼ同じです。
$('input').on('input keyup', throttle(function() {
// ...
}, 100));
私はこれがデバウンスであり、動作を抑制するものではないと思う。 –
それは良い点だ。私は、質問に答えたとき、デバウンスとスロットルの区別についてはっきりとしていなかった。それの皮肉なことは、それがアンダースコアの「スロットル」機能に適応したことです。 @ХристоПанайотовおそらくあなたは明確にすることができます:http://stackoverflow.com/questions/25991367/difference-between-throttling-and-debouncing-a-function(特に良い答えはありません。) –
- 1. 特別な場合にMouseMoveイベントを抑制する方法は?
- 2. matplotlibイベントのさらなる処理を抑制する方法
- 3. cppcheckインライン非適合抑制を抑制する方法は?
- 4. jQuery DataTablesでテーブルヘッダーを完全に抑制する方法は?
- 5. ユニバースファイルパスを抑制する方法は?
- 6. フォーカスされた入力コントロールでNotifyPropertyChangedイベントを抑制する方法は?
- 7. mysqlエラーを抑制する方法
- 8. スパークストリーミングを抑制する方法?
- 9. ResponseHeaderを抑制する方法
- 10. PDFTron:PTPDFViewCtrlでページラベルを抑制する方法
- 11. Jenkins groovyログを抑制する方法
- 12. DDLログを抑制する方法
- 13. スプリングリモートバッチスレーブを抑制する方法
- 14. 「シングルクリック」イベントを抑制する方法openlayers 3で地図上に描画中
- 15. jqueryでイベントを制限する方法は?
- 16. DynamicJasperの列ヘッダーの表示を抑制する方法は?
- 17. エアフローの現在のジョブを抑制する方法は?
- 18. UINavigationControllerバーのデフォルトの「編集」ボタンを抑制する方法は?
- 19. wpfのUI例外を抑制する方法は?
- 20. バッチスクリプトのメッセージを抑制する方法は?
- 21. Java上のクラスインスタンスで静的メソッドを抑制する方法は?
- 22. Crystalレポートバージョン10.0のサブレポートを抑制する方法は?
- 23. IAR EW 8.1のPe070エラーを抑制する方法は?
- 24. IDEA:スペルミスの警告を抑制する方法は?
- 25. クリスタルレポートのオンデマンドサブレポートを抑制する方法は?
- 26. makefileからのコマンド出力を抑制する方法は?
- 27. ActiveMQでの注文を抑制する方法は?
- 28. ジキルの空白行を抑制する方法は?
- 29. pycharmコミュニティ版のエラーを抑制する方法は?
- 30. SinatraアプリでPaperTrail gemの警告を抑制する方法は?
'keyup'で' setTimeout'を使ってください。fucntion – diEcho
ここではPHPタグは理解できますが、mysqlは分かりますか? –