我使用“代理”按钮解决了这个问题。
我将<p:inputText id="globalFilter"> 周围的h:panelGroup 设置为display:none 样式,如下所示:
<h:panelGroup style="display:none">
然后在完全不同的地方添加了一个输入文本
<h:panelGroup id="myFilter" >
<h:inputText id="myFilter_text" />
</h:panelGroup>
并绑定一个使用 jQuery on() 函数的 JS 函数(在旧 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",...
(只是切换了第一个和第二个参数)
就是这样,我可以随意将过滤器输入放置在我想要的任何位置。