Я новичок здесь, поэтому, пожалуйста, будьте осторожны со мной. Это несколько запутанная ситуация. :)
Я работаю над поисковым вводом, в котором пользователь вводит имя другого пользователя (или часть имени) в текстовое поле поиска, а затем возвращается список пользователей, соответствующих этой строке поиска. Проблема в том, что это немного медленно, когда задействованы десятки тысяч пользователей. Из-за этой медлительности, когда пользователь быстро вводит имя в поисковый ввод, на экране начинают мигать результаты поиска для каждого нажатия клавиши (задолго до того, как пользователь уже ввел строку поиска в). Это как сильно замедленная реакция.
Например, если я введу имя «Венди», результаты поиска для строки поиска «W» (первый введенный мной символ) пока не будут отображаться. Результаты поиска для буквы «W» будут отображены, затем «Мы» и так далее, и так далее, хотя я уже набрал полное имя и просто хочу увидеть результаты для «Венди».
Что я хочу сделать, это выполнять поиск только тогда, когда пользователь ничего не вводил в течение определенного периода времени (я думаю, две секунды). В противном случае будет отображено слово «Поиск». Код метода 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';
}
}
Надеюсь, все это имеет смысл. Заранее спасибо всем, кто может помочь.