Jsf 2 是否可以将全局筛选器放置在p:dataTable之外?

Jsf 2 是否可以将全局筛选器放置在p:dataTable之外?,jsf-2,primefaces,Jsf 2,Primefaces,我需要将p:dataTable的全局过滤器放在表本身之外 我想把它放在datatable存在的表单之外,但是对于我们来说,把过滤器放在datatable表单之内,但放在datatable本身之外就足够了 即使我将过滤器放在datatable表单内部,但放在datatable本身外部,它也会停止工作(它在p:datatable本身内部100%工作) 下面是过滤器本身的定义 <p:inputText id="globalFilter" onkeyup="myTableNameTable.fil

我需要将p:dataTable的全局过滤器放在表本身之外

我想把它放在datatable存在的表单之外,但是对于我们来说,把过滤器放在datatable表单之内,但放在datatable本身之外就足够了

即使我将过滤器放在datatable表单内部,但放在datatable本身外部,它也会停止工作(它在p:datatable本身内部100%工作)

下面是过滤器本身的定义

<p:inputText id="globalFilter" onkeyup="myTableNameTable.filter()" style="width:150px;"/>  

我用“代理”按钮解决了这个问题

我用
display:none
样式设置了
h:panelGroup
,它包围了
,如下所示:

<h:panelGroup style="display:none">  
    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",... 
(刚刚切换了第一个和第二个参数)


就这样,我可以随意将过滤器输入放在任何我想放的地方。

丹尼尔,回答得好。我今天还在用这个。这里是一种更通用的方法,其中ID只输入一次,tableId已被删除,以便可以轻松重用

function wireProxyFilter() {
    var proxyFilterJq = $("input[id$='globalFilterProxy']");
    var filterJq = $("input[id$='globalFilter']");
    
    proxyFilterJq.keyup( function () {
        var searchValue = proxyFilterJq.val();
        filterJq.val(searchValue);
        filterJq.trigger('keyup');
    });
}
function wireProxyFilter() {
    var proxyFilterJq = $("input[id$='globalFilterProxy']");
    var filterJq = $("input[id$='globalFilter']");
    
    proxyFilterJq.keyup( function () {
        var searchValue = proxyFilterJq.val();
        filterJq.val(searchValue);
        filterJq.trigger('keyup');
    });
}