我使用“代理”按钮解决了问题。
我设置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",...
(刚刚切换了第一个和第二个参数)
就是这样,我可以自由地将过滤器输入放在任何我想要的地方。