Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Primefaces SelectManyMenu with Filter:如何使用JS选择所有显示的项目_Javascript_Ajax_Primefaces - Fatal编程技术网

Javascript Primefaces SelectManyMenu with Filter:如何使用JS选择所有显示的项目

Javascript Primefaces SelectManyMenu with Filter:如何使用JS选择所有显示的项目,javascript,ajax,primefaces,Javascript,Ajax,Primefaces,我有SelectManyMenu(primeFaces 6.1)和“全选”和“全选”按钮,它们选择/取消选择选择选择列表中的所有项目。我用过滤器修改了SelectManyMenu,但我的“全选”按钮仍然依赖java方法进行选择,这意味着未过滤的的所有项目(完整)选择列表显示为选中,即使用户在单击“全选”之前过滤了选择列表。是否有方法选择客户端SelectMany菜单中显示的所有项目(已过滤或未过滤)? 我试图创建一个“选择筛选列表上的所有项目”按钮,该按钮是有条件呈现的(如果用户在筛选框中键入)

我有SelectManyMenu(primeFaces 6.1)和“全选”和“全选”按钮,它们选择/取消选择选择选择列表中的所有项目。我用过滤器修改了SelectManyMenu,但我的“全选”按钮仍然依赖java方法进行选择,这意味着未过滤的的所有项目(完整)选择列表显示为选中,即使用户在单击“全选”之前过滤了选择列表。
是否有方法选择客户端SelectMany菜单中显示的所有项目(已过滤或未过滤)? 我试图创建一个“选择筛选列表上的所有项目”按钮,该按钮是有条件呈现的(如果用户在筛选框中键入),但我找不到任何可以用于创建基于筛选的操作的事件

xhtml文件: MySelectionList对象:
public void selectAll()
{
selectionListString=new ArrayList();
对于(MySelectItem selectItem:selectionList)
{
selectionListString.add(selectItem.getValue());
}
}
公共资源(全部)
{
this.selectionListString=newArrayList();
}
有人知道怎么做吗


注意:我使用PrimeFaces 6.1,您可以向SelectManyMenu小部件添加javascript方法,只选择可见项:

PrimeFaces.widget.SelectManyMenu.prototype.selectVisible =  function() {
        for(var i = 0; i < this.items.length; i++) {
            var item = this.items.eq(i);
            if(item.is(':visible')) {
                this.selectItem(item);
            } else {
                this.unselectItem(item);
            }
        }
    };
PrimeFaces.widget.SelectManyMenu.prototype.selectVisible=function(){
对于(var i=0;i
然后,只需在按钮上触发一个
PF('yourSelectManyMenuWidgetVar')。selectVisible()

代码是从中借用和修改的。确保在脚本之后加载上述修改


还要确保向primefaces团队提出一个功能请求,在最好的情况下,通过拉式请求丰富功能。

回答得好。。。实际上,所有这些都是html、javascript(在jquery的帮助下)和PrimeFaces的开源。。。所有这些都只是网络开发,真的…;-)
    /**
     *
     * @return
     */
    public BirdSelectionList getSelectionList()
    {
        return selectionList;
    }

    /**
     *
     * @param selectionList
     */
    public void setSelectionList(MySelectionList selectionList)
    {
        this.selectionList = selectionList;
    }
    public void selectAll()
    {
        selectionListString = new ArrayList<>();
        for (MySelectItem selectItem : selectionList)
        {
            selectionListString.add(selectItem.getValue());
        }
    }
    public void deselectAll()
    {
        this.selectionListString = new ArrayList<>();
    }

PrimeFaces.widget.SelectManyMenu.prototype.selectVisible =  function() {
        for(var i = 0; i < this.items.length; i++) {
            var item = this.items.eq(i);
            if(item.is(':visible')) {
                this.selectItem(item);
            } else {
                this.unselectItem(item);
            }
        }
    };