我使用「代理」按鈕解決了問題。
我設置h:panelGroup
與display:none
風格包圍<p:inputText id="globalFilter">
,就像這樣:
<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')
});
}
使用的$()
和(),因爲我使用jQuery的額外1.7.1庫,否則我只好用jQuery()
和替代
$(document).on("keyup", "#myFilter input",
我會用
jQuery(document).delegate("#myFilter input","keyup",...
(剛剛切換了第一個和第二個參數)
就是這樣,我可以自由地將過濾器輸入放在任何我想要的地方。