限制jstree中子节点的选择数量

时间:2016-07-25 08:09:22

标签: javascript jquery checkbox limit jstree

我正在使用jsTree。我想将子节点选择限制为4(要么不允许用户选择4个以上的节点或禁用所有复选框)。我正在使用无效的选择限制。我怎样才能做到这一点?

$("#mytree").jstree({ 
    "plugins" : [ "themes","html_data", "ui", "crrm","checkbox" ],
    "html_data" : {
        // ...
    },
    "checkbox": {
        "keep_selected_style": false
    },
    "ui": {
        "select_limit": 4,
    },
    // ...
});

3 个答案:

答案 0 :(得分:0)

按照传统方法,您可以按如下方式完成此任务

  @Override
        public  RecyclerViewHolders onCreateViewHolder(ViewGroup parent, int viewType) {

            View layoutView = LayoutInflater.from(parent.getContext()).inflate(isViewWithCatalog ? R.layout.productlistview : R.layout.productgrids, null);
            RecyclerViewHolders rcv = new RecyclerViewHolders(layoutView);
            return rcv;


        }

答案 1 :(得分:0)

我自己就碰到了这个。

如果您正在使用jsTree v3 +,那么" UI"插件不再存在,因此" select_limit"属性。 This is the current list of plugins that are available.

如果您只想一次限制一个选项,核心模块会有一个"多个"您可以根据需要设置为true / false的属性。但是如果你想将它限制为四个选择,那么the author recommended using the "conditional select" plugin

答案 2 :(得分:0)

我也有同样的需求,并且能够用一些Java脚本找到解决方案。     我想检查3个节点的限制,所以我这样做了:

$('#jstree')
    // listen for event
    .on('changed.jstree', function (e, data) {
            var i, j, r = [];
            var lenght = data.selected.length;


            for(i = 0, j = data.selected.length; i < j; i++) {
                 if(data.instance.get_node(data.selected[i]).type.localeCompare("child") != 0) {
                    lenght -= 1;
                }
            }


            if(lenght > 3) {

                if(data.instance.get_node(data.selected[data.selected.length-1]).type.localeCompare("child") == 0) {
                    $("#jstree").jstree("uncheck_node", data.instance.get_node(data.selected[data.selected.length-1]).id);
                } else {
                    $("#jstree").jstree("uncheck_node", data.instance.get_node(data.selected[data.selected.length-2]).id);
                }
            }
    })
    // create the instance
    .jstree({
          'core' : 
           ...