私はここにいるのは初めてなので、お手柔らかにお願いします。これはやや混乱した状況です。:)
ユーザーが別のユーザーの名前 (または名前の一部) を検索テキスト ボックスに入力すると、その検索文字列に一致するユーザーのリストが返される検索入力に取り組んでいます。問題は、何万人ものユーザーが関与している場合、少し遅いことです。この遅さのため、ユーザーが検索入力にすばやく名前を入力すると、画面はキーストロークごとに検索結果をフラッシュし始めます (ユーザーが検索文字列を既に入力した後)。かなり反応が遅れているようです。
たとえば、「Wendy」という名前を入力すると、検索文字列「W」(入力した最初の文字) の検索結果はまだ表示されません。文字「W」の検索結果が表示され、続いて「We」などが続きますが、私はすでにフルネームを入力しており、「Wendy」の結果を表示したいだけです。
私がやりたいのは、ユーザーが一定時間何も入力していない場合にのみ検索を実行することです (私は2秒間考えています)。それ以外の場合は、「検索中」という単語が表示されます。Javascript メソッドのコードは次のとおりです。注意として、そのコードは現在ユーザーを検索するために機能していますが、遅延実行を実装する必要があるだけです。
function updateSearchResults() {
if($F('searchString').length > 0){
Element.update($('searchResultsScrollBox'), '<h3>Searching...</h3>');
$('searching').style.display = 'block';
var url = '<c:url value='ajaxFrontGetUsers.html'/>';
var ajax = new Ajax.Updater({success: 'searchResults'}, url,
{method: 'post', parameters: $('searchForm').serialize(true)});
$('searching').style.display = 'none';
}
}
これがすべて理にかなっていることを願っています。助けていただける方、よろしくお願いします。