combotree 只能选中叶子节点

combotree 只能选中叶子节点

一、 Aphorism

人之所恶在好为人师,慎言之。

二、summary

应该分为两种情况:

1. 第一种情况(单选): multiple == false

$('#tt').combotree({
        nultiple: false,
        onBeforeSelect: function (node) {
            if (!$(this).tree('isLeaf', node.target)) {
                return false;
            } 
        }
        // onBeforeCheck: function (node) {
        //  if (!$(this).tree('isLeaf', node.target)) {
        //      return false;
        //  }
        // }
});

2. 第二种情况(多选): multiple == true

$('#tt').combotree({
        nultiple: true,
        // onBeforeSelect: function (node) {
        //  if (!$(this).tree('isLeaf', node.target)) {
        //      return false;
        //  } 
        // },
        onBeforeCheck: function (node) {
            if (!$(this).tree('isLeaf', node.target)) {
                return false;
            }
        }
});

所以两个都写上也没有问题,就是多做个事件处理。

三、粘贴代码

1. html 代码

html 中的依赖: js 文件和css 文件需要自己去 easyui 官网下载


<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Basic ComboTree - jQuery EasyUI Demo</title>
    <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
    <link rel="stylesheet" type="text/css" href="../../themes/icon.css">
    <link rel="stylesheet" type="text/css" href="../demo.css">
    <script type="text/javascript" src="../../jquery.min.js"></script>
    <script type="text/javascript" src="../../jquery.easyui.min.js"></script>
</head>
<body>
    <h2>Basic ComboTree</h2>
    <p>Click the right arrow button to show the tree panel.</p>
    <div style="margin:20px 0"></div>
    <div class="easyui-panel" style="width:100%;max-width:400px;padding:30px 60px;">
        <div style="margin-bottom:20px">
            <input id="tt"  style="width: 100%;">
            <!-- <input id="tt" class="easyui-combotree" data-options="url:'tree_data1.json',method:'get',label:'Select Node:',labelPosition:'top'" style="width:100%"> -->
        </div>
    </div>
</body>
<script>
    $('#tt').combotree({
        url: 'tree_data1.json',
        method:'get',
        label: 'Select Node:', 
        labelPosition: 'top',
        multiple: true,
        onBeforeSelect: function (node) {
            if (!$(this).tree('isLeaf', node.target)) {
                return false;
            } 
        },
        onBeforeCheck: function (node) {
            if (!$(this).tree('isLeaf', node.target)) {
                return false;
            }
        }
    });
</script>
</html>

2、tree_data1.json 文件

json 文件和html 文件放在一个目录下就好了


[{
    "id":1,
    "text":"My Documents",
    "children":[{
        "id":11,
        "text":"Photos",
        "state":"closed",
        "children":[{
            "id":111,
            "text":"Friend"
        },{
            "id":112,
            "text":"Wife"
        },{
            "id":113,
            "text":"Company"
        }]
    },{
        "id":12,
        "text":"Program Files",
        "children":[{
            "id":121,
            "text":"Intel"
        },{
            "id":122,
            "text":"Java",
            "attributes":{
                "p1":"Custom Attribute1",
                "p2":"Custom Attribute2"
            }
        },{
            "id":123,
            "text":"Microsoft Office"
        },{
            "id":124,
            "text":"Games",
            "checked":true
        }]
    },{
        "id":13,
        "text":"index.html"
    },{
        "id":14,
        "text":"about.html"
    },{
        "id":15,
        "text":"welcome.html"
    }]
}]

四、supplement

复写配置参数,可以解决很多bug

  1. 之前遇到过一次,combotree 中的值选中后在 box 中不能显示,原因可能是框架中对combotree 操作蛮多的,最终的解决方案是,通过jquery获取 dom ,然后对 combotree 进行复写,之后,每次选中节点, box 中就能正常显示了。

  2. 我记得在 处理datagrid 双表头问题的时候,也是 把gridDefined 复写后, initGrid ,之后双表头的 显示 bug 就消失了。当然,最终我采取的方案是 操作 td dom 元素,更简便写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值