2019独角兽企业重金招聘Python工程师标准>>>

引言

最近由于工作的需要,需要使用到下拉树,就是我们有一个输入框,用户要输入东西,但是输入的东西是从我们那个之中选的,为了防止用户输入错误,我们使用了下拉树,因为为一个树形列表,用户选择点击树形列表的哪一个,哪一个就会上去。combotree,效果如下:

1.创建combotree

我们知道easyui的每一个控件创建都有两种方法,combotree也不例外,一种是使用html标签直接初始化,一种是使用javascript方法实现。

a.html标签实现

<select id="cc" class="easyui-combotree" style="width:200px;"data-options="url:'get_data.php',required:true">
</select>

b.javascript创建

<input id="cc" value="01">
$('#cc').combotree({url: 'get_data.php',required: true
});

可以看得出,这儿加载数据都是在初始化的时候,直接去服务器请求,然后easyui自己加载的,其实就是加载json数据,但是我们写项目一般都是先用ajax请求下来,然后在本地加载该js对象,所以我们一般使用loadData来加载数据:

$('#addEmailform #ifinereportCptNameUrl').combotree('loadData',data );

值得注意的是:该数据的格式,必须是如下:

var data=[{id: 1,text: 'Languages',children: [{id: 11,text: 'Java'},{id: 12,text: 'C++'}]}]

就是初始化的时候请求远程的数据,该数据也一样需要是这个格式。

2.取值

其实有很多种方法,下面举两种

a.combotree的onSelect事件中就可以得到

$('#addEmailform #ifinereportCptNameUrl').combotree({required: true,width:350,height:35,onSelect :function(node){alert(node.id+node.text)                         }});

上述方法,就是在初始化combotree的时候,注册一个onSelect事件,但是有更多的时候,我们在在别的函数里面需要得到现在已经选中的节点的值,就必须采用第二种方法了。

b.方法如下

 var tCpt = $('#addEmailform #ifinereportCptNameUrl').combotree('tree');   // get the tree objectvar n = tCpt.tree('getSelected');      // get selected node     alert(n.id+n.text)

3.设置值

setValues values 设置组件值的数组。
代码实例:

  1. $('#cc').combotree('setValues', [1,3,21]);
setValue value 设置组件的值。
代码实例:

  1. $('#cc').combotree('setValue', 6);

注意第二个参数树该节点的id

至此,基础知识普及完成。

4.easyui的combotree的一个小坑,值得注意。

就是同一个页面,有好几个combotree加载同一个本地数据的时候,只有最后一个combotree起作用,废话不多说,贴bug的代码:

<!DOCTYPE html>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>form-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><script type="text/javascript">$(function() {var data = [{id: 1,text: 'Languages',children: [{id: 11,text: 'Java'},{id: 12,text: 'C++'}]},{id: 2,text: 'book',children: [{id: 13,text: 'xxx1'},{id: 14,text: 'ccc'}]}];$('#cc').combotree({required: true});$('#cc').combotree('loadData',data );$('#cc1').combotree({required: true});$('#cc1').combotree('loadData',data );$('#cc2').combotree({required: true,multiple: true,height:50});$('#cc2').combotree('loadData',data );})function setvalue(){$.messager.prompt('SetValue','Please input the value(1,2,3,etc):',function(v){if (v){$('#cc1').combotree('setValue',v);}});}</script>
</head>
<body><h2>Basic Form combotree </h2><div style="margin:20px 0;"></div><div class="easyui-panel" title="New Topic" style="width:400px"><div style="padding:10px 60px 20px 60px" ><div>combotree</div><input id="cc" ></div><div style="padding:10px 60px 20px 60px" >combotree action<div style="margin:20px 0;"><a href="javascript:void(0)" class="easyui-linkbutton" onclick="setvalue()">SetValue</a><a href="javascript:void(0)" class="easyui-linkbutton" onclick="alert('key:'+$('#cc1').combotree('getValue'))">GetValue</a><a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#cc1').combotree('disable')">Disable</a><a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#cc1').combotree('enable')">Enable</a></div><input id="cc1" ></div><div style="padding:10px 60px 20px 60px" ><div>combotree multiple</div><input id="cc2" ></div></div>
</body>
</html>

你会发现只有第三个起作用,其余的不起作用,原因在于,三个加载的是同一份data数据,而且时间点很近,解决办法,给每一个combotree注册一个 onShowPanel事件,然后再在这个事件里面加载data数据,就可以,解决之后的代入如下:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Basic Dialog - 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"><script type="text/javascript" src="jquery.min.js"></script><script type="text/javascript" src="jquery.easyui.min.js"></script><script type="text/javascript">$(function() {var data = [{id: 1,text: 'Languages',children: [{id: 11,text: 'Java'},{id: 12,text: 'C++'}]},{id: 2,text: 'book',children: [{id: 13,text: 'xxx1'},{id: 14,text: 'ccc'}]}];$('#cc').combotree({required: true,onShowPanel:function(){$('#cc').combotree('loadData',data );}});//$('#cc').combotree('loadData',data );$('#cc1').combotree({required: true,onShowPanel:function(){$('#cc1').combotree('loadData',data );}});//$('#cc1').combotree('loadData',data );$('#cc2').combotree({required: true,multiple: true,height:50,onShowPanel:function(){$('#cc2').combotree('loadData',data );}});//$('#cc2').combotree('loadData',data );})function setvalue(){$.messager.prompt('SetValue','Please input the value(1,2,3,etc):',function(v){if (v){$('#cc1').combotree('setValue',v);}});}function getText(){var tCpt = $('#cc1').combotree('tree');   // get the tree objectvar n = tCpt.tree('getSelected');      // get selected nodealert(n.text);}</script>
</head>
<body><h2>Basic Form combotree </h2><div style="margin:20px 0;"></div><div class="easyui-panel" title="New Topic" style="width:400px"><div style="padding:10px 60px 20px 60px" ><div>combotree</div><input id="cc" ></div><div style="padding:10px 60px 20px 60px" >combotree action<div style="margin:20px 0;"><a href="javascript:void(0)" class="easyui-linkbutton" onclick="setvalue()">SetValue</a><a href="javascript:void(0)" class="easyui-linkbutton" onclick="alert('key:'+$('#cc1').combotree('getValue'))">GetValue</a><a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#cc1').combotree('disable')">Disable</a><a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#cc1').combotree('enable')">Enable</a><a href="javascript:void(0)" class="easyui-linkbutton" onclick="getText()">getText</a></div><input id="cc1" ></div><div style="padding:10px 60px 20px 60px" ><div>combotree multiple</div><input id="cc2" ></div></div>
</body>
</html>

打完收工!

转载于:https://my.oschina.net/u/1540325/blog/780751

【combotree】easyui的combotree(树形下拉框)使用总结相关推荐

  1. html树形多选下拉列表,EasyUI 多行树形下拉框(Multiple ComboTree)_Vue EasyUI Demo

    源代码 Multiple ComboTree v-model="value" :data="data" :multiple="true" : ...

  2. easyui复杂表单_jQuery EasyUI 表单 – 创建树形下拉框(ComboTree) | 菜鸟教程

    jQuery EasyUI 表单 - 创建树形下拉框 树形下拉框(ComboTree)是一个带有下列树形结构(Tree)的下拉框(ComboBox).它可以作为一个表单字段进行使用,可以提交给远程服务 ...

  3. EasyUI:combotree(树形下拉框)复选框选中父节点(子节点的状态也全部选中)输入框中只显示父节点的文本值

    在开发过程中遇到的小案例 效果展示 未处理之前的效果: 处理之后的效果: 需求详情 combotree(树形下拉框)复选框选中父节点时输入框只显示父节点的文本值,但是子节点的状态是选中的. 当所有子节 ...

  4. ajax使用json下拉框,ajax请求后台得到json数据后动态生成树形下拉框的方法

    如下所示: $(function(){ $.ajax({ url:"departmentAction_getAllDep.action", type:"post" ...

  5. iview 下拉select样式_Vue.js相关:iview实现select tree树形下拉框的示例代码

    Vue.js相关:iview实现select tree树形下拉框的示例代码 发布于 2020-3-16| 复制链接 摘记: 本文介绍了iview实现select tree树形下拉框的示例代码,分享给大 ...

  6. treeselect只选了分支节点全选_vue Treeselect 树形下拉框:获取选中节点的ids和lables操作...

    API: https://vue-treeselect.js.org/#events 1.ids: 即value 1.lable: 需要用到方法:@select(node,instanceId) 和 ...

  7. JavaScript树形下拉框

    js库地址:https://github.com/hzwy23/Hselect 这个JS文件是对select标签的一个扩展,使得select能够支持树形下拉框 1.依赖关系: 使用这段js代码之前,请 ...

  8. element做树形下拉_一个基于 elementUi的vue树形下拉框组件

    # wl-vue-select,wl-tree-selectcss # 简介vue 用于vue框架的树形下拉框及带全选的普通下拉框.   node Tree drop-down box for vue ...

  9. element做树形下拉_一个基于 elementUi 的树形下拉框组件vue

    wl-vue-select,wl-tree-select 简介 用于vue框架的树形下拉框及带全选的普通下拉框. Tree drop-down box for vue framework and or ...

  10. 树形下拉框字体变粗问题

    树形下拉框点击选中后,选中的字体颜色变粗,再次打开下拉框,未选中的字体也会变粗,解决方法: <style lang='less'> // el-tree 字体不加粗 .el-tree .e ...

最新文章

  1. 详解Struts2 Action名称的搜索顺序
  2. 前端小白在asp.net core mvc中使用ECharts
  3. Spring Boot 2.2版本变化[翻译]
  4. 线性代数及其应用(原书第5版)
  5. 不能创建对象qmdispatch_按键精灵更新时提示 ActiveX 部件不能创建对象 错误代码 800a01ad_电脑故障...
  6. 托物言志--在心为志,发言为诗。
  7. 博客园(cnblogs)右侧添加悬浮打赏功能
  8. ubuntu安装nvidia显卡驱动黑屏nvidia-smi黑屏-显卡故障
  9. 计算机主板的典型布局,主板布局
  10. solr mysql dih_Solr结构化数据导入DIH
  11. JavaScript - 日期型字符串增加天数(日期增加指定天数计算)
  12. C++ QT有道翻译 爬虫 分析 破解
  13. 计算机图形杂志,计算机图形学顶级杂志、会议、期刊
  14. C++使用windowAPI开启3389端口
  15. 研究 | CT图像迭代重建算法研究进展
  16. 华为设备配置Telnet与SSH服务实现运程连接网络设备
  17. js 判断两个时间相差多少月_js对日期操作 获取两个日期的相差是否在几月之内...
  18. NYOJ-弟弟的作业
  19. 【漏洞挖掘】QQ钓鱼网站实战渗透
  20. 为什么计算机辅助设计是CAD,为何要从CAD技术转换到BIM技术?

热门文章

  1. 【11月7日】实时音视频技术专场来袭!就在本周六!
  2. web安全体系建设需要注意的事项
  3. Python遍历列表,一次取多个值
  4. 高大上的名字-数据可视化
  5. 【云服务器 ECS 实战】云服务器新手指南(配置+使用详解)
  6. Python描述数据结构之数组和特殊矩阵篇
  7. DB2更改表字段长度
  8. [翻译]扫描线算法(Line Sweep Algorithm)(2)
  9. B样条基函数:2.B样条基函数的定义和性质
  10. 基于Unity3D ScrollRect的游戏摇杆实现