Я решил проблему с помощью кнопки «прокси».
Я установил h:panelGroup
, который окружал <p:inputText id="globalFilter">
стилем display:none
, например:
<h:panelGroup style="display:none">
затем добавил текст ввода в совершенно другое место
<h:panelGroup id="myFilter" >
<h:inputText id="myFilter_text" />
</h:panelGroup>
И привязывает функцию JS, которая использует функцию jQuery on()
(в более старой версии jQuery вы можете использовать delegete()
), например:
function searchKeyPressedHandler() {
$(document).on("keyup", "#myFilter input", function (event) {
var searchValue = document
.getElementById('myFilter_text').value;
$("#myTableId\\:globalFilter").val(searchValue);
$("#myTableId\\:globalFilter").trigger('keyup')
});
}
Использовал $()
и on (), потому что я использую дополнительную библиотеку jQuery 1.7.1, в противном случае мне пришлось бы использовать jQuery()
вместо
$(document).on("keyup", "#myFilter input",
Я бы использовал
jQuery(document).delegate("#myFilter input","keyup",...
(только что переключил первый и второй аргументы)
Вот и все, и я могу разместить вход фильтра там, где захочу.