ユーザーが検索パラメーターを入力する入力があります。現時点では、検索結果を返すPHPスクリプトに対してPOSTajaxリクエストを実行するためのキーアップがあります。ただし、(文字通りではなく)500億の投稿リクエストを(ユーザーが入力すると)約10秒で起動するため、エクスペリエンス全体が遅くなります。jQueryを使用して、スペースバーの使用を検出することで「キーアップ」ではなく「ワードアップ」を検出できますか?
これは意味がありますか?
最初の回答とはまったく異なるため、これを別の回答として追加します。
$('#yourinput').keyup(function(){
var input = this,
timer = $.data(this, 'timer'),
lastrequest = $.data(this, 'lastrequest');
if (timer) { // if there is a keyup timeout still pending, cancel it
clearTimeout(timer);
$.data(this, 'timer', 0);
}
if (lastrequest) { // if there is an AJAX request still running, abort it
lastrequest.abort();
$.data(this, 'lastrequest', false);
}
timer = setTimeout(function(){
lastrequest = $.post({ // or whatever your AJAX call is...
url: 'yourfile',
data: { search: input.value },
success: function(response){
lastrequest = false;
// handle response here
}
});
$.data(input, 'lastrequest', lastrequest);
}, 500);
$.data(this, 'timer', timer);
});
$('#yourinput').keyup(function(e) {
if (e.which == 32) { // space key pressed
// do your AJAX here
}
});
event.which
この機能の詳細については、を参照してください。
ユーザーが特定の期間入力を停止したときの遅延のようなものを使用できますか?
おそらくこのようなものですか?スペースバーの押下をトリガーする機能を追加することもできます。(これはGoogleスタイルのインスタ検索にのみ使用されたため、役立つ場合と役に立たない場合があります)。
$('#Search').keyup(function (event)
{
delay(function(){
var textboxValue = $('#Search').val();
if( textboxValue.length >= 2)
{
//Perform search
}
});
});
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
あなたは確かにそうすることができました。keyup イベントをローカルで検出し、それらのスペースをチェックします。
しかし、接頭辞に一致するすべての検索結果を取得し、それらをデータ構造の JavaScript に送信するように工夫できれば、より多くの活用が得られます。詳細については、「デジタル検索ツリー」(「試行」とも呼ばれます) を参照してください。