Звучит так, как будто вы хотите объединить события, например, это подождет полсекунды, прежде чем запустить ajax-запрос, и любой ввод, введенный в этот момент, будет включен.Но вы не будете запускать ajax-запрос для каждого набранного символа.
<h:inputText onkeyup="keyupHandler();"/>
...
<script>
var keystrokeTimeout;
keyupHandler = function(event) {
var minChars = 4;
var len = $(this).val().length;
if((len != 0) && (len < minChars)) {
return;
}
var ajaxRequest = function() {
jsf.ajax.request('results', null, {
execute: 'results',
render: 'results'
});
}
clearTimeout(keystrokeTimeout);
keystrokeTimeout = setTimeout(ajaxRequest, 500); // millisecs
}
</script>
Это удаленно как то, что вы хотите сделать?
РЕДАКТИРОВАТЬ: Другое предложение заключается в том, что вы проверяете Richfaces4 a4j: функциональность очереди.Это позволяет объединять события, например, в сценарии keyup, если вы опирались на клавиатуру, когда текущий ajax-запрос завершается, будет отправлен только один дополнительный запрос.Также возможно указать задержку запроса и игнорировать устаревшие ответы.Большая ошибка, которую не делает Richfaces (что делают основные лица), состоит в том, что RF использует ту же основную очередь, что и реализация JSF, поэтому у вас нет риска обработки не по порядку.
IИмейте в виду, что если вы еще не используете эту библиотеку, это не маленький шаг.