Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框
Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点
EasyUI Combotree叶子节点增加单选框
================================
©Copyright 蕃薯耀 2018年4月28日
http://fanshuyao.iteye.com/
建议使用方式三(完美版)
一、方式一,最简单(只能单选叶子节点,叶子节点前面无多选框)
$("xxxId").combotree({ data : [{……},{……},{……}],//数据省略 required: false, onBeforeSelect : function(node){ if(!$(this).tree("isLeaf", node.target)){//如果不是叶子节点,不让选择 return false; } } });
二、方式二:控制只能选一项,选中某一项后后面不能再勾选(体验比较生硬)
$("xxxId").combotree({ multiple : true,//设置可以多选,显示多选框,不设置不会出现多选框 data : [{……},{……},{……}],//数据省略 required: false, checkbox : true,//显示多选框 onlyLeafCheck : true,//只在叶子节点显示多选框 onBeforeSelect : function(node){ if(!$(this).tree("isLeaf", node.target)){//如果不是叶子节点,不让选择 return false; } }, onBeforeCheck : function(node, checked){//控制只能选一项 if(checked){//当前为选中操作 var nodes = $(this).tree("getChecked"); //控制只能选一项,选中某一项后后面不能再勾选 if(nodes.length == 0){ return true; }else{ return false; } }else{//当前为取消选中操作 return true; } } });
三、方式三:随意选择任意一项,但只能选一项(完美版)
$("xxxId").combotree({ multiple : true,//设置可以多选,显示多选框,不设置不会出现多选框 data : [{……},{……},{……}],//数据省略 required: false, checkbox : true,//显示多选框 onlyLeafCheck : true,//只在叶子节点显示多选框 onBeforeSelect : function(node){ $(this).tree("check", node.target);//控制点击文字时也能勾选 return false;//避免不是选择勾选框而是点击文字出现黄色的选中条纹 }, onBeforeCheck : function(node, checked){//控制只能选一项 if(checked){//当前为选中操作 var nodes = $(this).tree("getChecked"); //控制只能选一项,选中某一项后后面不能再勾选 if(nodes.length > 0){ for(var i=0; i<nodes.length; i++){ $(this).tree("uncheck", nodes[i].target);//清除之前选中的项 } } } } });
方法三中:onBeforeSelect方法返回false,避免第一次点击文字选中后,再重新打开选择,不点击文字,直接勾选多选框,第一次点击的文字有黄色背景的情况,如下:
方式四:复杂类型,EasyUI Combotree展开所有父节点和显示完整路径(2018-05-11追加)
1、根据叶子节点的值展开所有父节点
2、combotree文本显示为树的完整路径(如:衣服 > 上衣 > 皮衣),从父到子
$("#cmm_code_id").combotree({ multiple: true, required : true, checkbox : true, onlyLeafCheck : true,//只能叶子节点才能勾选 url : xxx/xxx.action", onBeforeSelect : function(node){ $(this).tree("check", node.target);//控制点击文字时也能勾选 return false; }, onClick : function(node){//控制点击文字时,显示全路径 $("#cmm_code_id").combotree("setText", getCombotreePathNames("cmm_code_id", node.id)); }, onBeforeCheck : function(node, checked){ if(checked){//如果是勾选操作,则把之前选中的节点清除(不勾选) var nodes = $(this).tree("getChecked"); if(nodes.length > 0){ for(var i=0; i<nodes.length; i++){ $(this).tree("uncheck", nodes[i].target); } } } }, onCheck : function(node, checked){ if(checked){ $("#cmm_code_id").combotree("setText", getCombotreePathNames("cmm_code_id", node.id)); } }, onLoadSuccess : function(node, data){ var cmm_code_id_value = "${buildingNaming.cmm_code_id}"; if(cmm_code_id_value != null && $.trim(cmm_code_id_value) != ""){ var combotreeId = "cmm_code_id"; combotreeInitValueAndExpand(combotreeId, cmm_code_id_value); $("#"+combotreeId).combotree("setText", getCombotreePathNames(combotreeId, cmm_code_id_value)); } } });
/** * 根据叶子节点展开所有父节点 * @param treeObj 树对象,(combotree的树对象获取:var treeObj = comboObj.combotree("tree");) * @param node 叶子节点 */ function expandParent(treeObj, node){ var parentNode = treeObj.tree("getParent", node.target); if(parentNode != null && parentNode != "undefined"){ treeObj.tree("expand", parentNode.target); expandParent(treeObj, parentNode); } }; /** * tree初始化赋值并展开所有父节点 * @param treeObj 树对象 * @param leafValue 叶子节点的值 */ function treeInitValueAndExpand(treeObj, leafValue){ var nodesChecked = treeObj.tree("getChecked");//获取选中的值 if(nodesChecked.length > 0){ for(var i=0; i<nodesChecked.length; i++){ expandParent(treeObj, nodesChecked[i]); } } }; /** * 根据叶子节点选中的值,获取树整个路径的名称 * @param treeObj 树对象,(combotree的树对象获取:var treeObj = comboObj.combotree("tree");) * @param node 叶子节点 */ function getTreePathNames(treeObj, node){ var pathName = node.text; var parentNode = treeObj.tree("getParent", node.target); if(parentNode != null && parentNode != "undefined"){ pathName = getTreePathNames(treeObj, parentNode) + " > " + pathName; } return pathName; }; /** * 根据叶子节点选中的值,获取树整个路径的名称 * @param combotreeId 唯一ID * @param leafValue 叶子节点的值 */ function getCombotreePathNames(combotreeId, leafValue){ var combotreeObj = $("#"+combotreeId); var treeObj = combotreeObj.combotree("tree"); var nodesChecked = treeObj.tree("getChecked");//获取选中的值 var pathName = ""; if(nodesChecked.length > 0){ for(var i=0; i<nodesChecked.length; i++){ pathName += getTreePathNames(treeObj, nodesChecked[i]); } } return pathName; }; /** * combotree初始化赋值并展开所有父节点 * @param combotreeId 唯一ID * @param leafValue 叶子节点的值 */ function combotreeInitValueAndExpand(combotreeId, leafValue){ var combotreeObj = $("#"+combotreeId); var treeObj = combotreeObj.combotree("tree"); combotreeObj.combotree("setValue", leafValue);//赋值 treeInitValueAndExpand(treeObj, leafValue); };
效果如下:
1、默认显示完整路径
2、默认根据叶子节点的值赋值,并从该子结点逐层向上展开所有父结点
(如果你觉得文章对你有帮助,欢迎捐赠,^_^,谢谢!)
================================
©Copyright 蕃薯耀 2018年4月28日
http://fanshuyao.iteye.com/
相关推荐
Easyui 是一个基于 jQuery 的前端框架,用于快速构建用户界面。Combotree 是 Easyui 提供的一个组件,它结合了下拉框(combobox)和树形结构(tree),常用于展示具有层级关系的数据,并允许用户进行选择。在这个...
本项目名为"easyui_combotree_search",主要涉及到jQuery、EasyUI、Combotree以及搜索功能的实现,特别是将树形结构与搜索框结合的应用。下面将详细阐述这些知识点。 1. **jQuery**:jQuery是一个快速、简洁的...
Combotree控件将树形结构和输入框结合在一起,用户可以选择树中的一个或多个节点,然后在输入框中显示所选节点的文本。这对于处理如组织结构、地区分类等具有层次关系的数据非常实用。 要实现Combotree与JSON数据的...
总结来说,jQuery EasyUI的Combotree组件提供了一种树形下拉列表的界面,用户可以方便地选择多个项目。通过启用`checkbox`选项和`multiple`属性,我们可以实现多选功能。服务器端的代码负责提供JSON数据,前端则负责...
`jQuery EasyUI Combotree`组件因其简单易用、功能强大而成为开发者常用的选择之一。本文档将详细介绍如何利用jQuery EasyUI中的Combotree实现异步加载树形结构,并提供一个完整的示例。 #### 二、理解Combotree与...
EasyUi 是一个基于 jQuery 的前端框架,它提供了一系列易于使用的组件,帮助开发者快速构建用户界面。其中,Combotree 是一个结合了下拉列表和树形结构的组件,常用于展示层级关系的数据,并且在实际应用中,往往...
JQuery EasyUI 是一个基于 jQuery ...总的来说,JQuery EasyUI 的 Combotree 提供了一种优雅的方式来展示和选择层级结构的数据。结合博客中的内容,你可以深入学习如何在实际项目中有效地利用这个组件,提升用户体验。
### jQuery-EasyUI Combotree 异步树生成详解 #### 一、Combotree 组件简介 在jQuery EasyUI框架中,Combotree组件是一个非常实用的功能组件,它结合了下拉列表(Combobox)与树形结构(Tree)的特点,能够实现...
本文将探讨如何解决 EasyUI ComBotree 在选择父节点时自动选择子节点的问题。 首先,这个问题出现在当用户勾选父节点时,EasyUI 的默认行为会同时勾选所有子节点。在某些业务场景下,这并不符合需求,例如,可能...
《jQuery EasyUI、ZTree与折线图的综合应用》 在Web开发中,jQuery EasyUI、ZTree和折线图是三种常见的组件,它们分别用于构建用户界面、实现树形结构展示和数据可视化。本篇文章将深入探讨这些技术及其在实际项目...
### jQuery EasyUI Combotree 异步树生成详解 #### 一、概述 在Web开发中,树形结构是常用的数据展示方式之一,特别是在需要层级显示数据时尤为常见。jQuery EasyUI 是一个基于 jQuery 的 UI 插件集合,它简化了...
jQuery EasyUI 提供了一系列表单组件,如复选框(checkbox)、单选按钮(radio)、日期选择器(datebox)等,方便创建和验证表单。 ### 3. 主题系统 jQuery EasyUI 支持多主题,开发者可以通过修改或自定义 CSS ...
jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一...总之,jQuery EasyUI 是一个强大且易于使用的前端框架,其组件丰富,API 设计合理。通过深入学习和掌握 API,开发者可以构建出高效、美观的 Web 应用程序。
jQuery EasyUI 是一款基于 jQuery 的前端框架,它提供了丰富的用户界面组件,使得开发者可以快速构建出美观且功能强大的Web应用。在本文中,我们将深入探讨jQuery EasyUI 1.4.5版本的API,了解其核心功能、组件以及...
在IT行业中,jQuery EasyUI是一个基于jQuery的前端框架,它提供了丰富的UI组件,极大地简化了Web界面开发。本文将深入探讨“Jquery EasyUI 异步树”这一主题,特别是如何实现适合大数据量无限级加载的功能。 首先,...
- **表单组件**:包括输入框、复选框、单选框、下拉选择等,提供表单验证功能。 3. **API 使用** - **方法调用**:通过`.easyui`链式调用来操作组件,如`$("#element").dialog("open")`打开对话框。 - **属性...
JQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的UI组件,使得开发者能够快速构建功能丰富的Web应用。这个离线包包含了JQuery EasyUI的完整版本,具体为1.3.0,这是一个相对较旧但仍然广泛使用的版本...
5. **表单(Form)**:表单组件可以帮助开发者快速创建和管理表单元素,如输入框、选择框、复选框等,同时支持数据验证和提交。 6. **按钮(Button)**:按钮组件提供了一种直观的方式来触发某些动作,可以配置为...
jQuery EasyUI 是一款基于 jQuery 的前端开发框架,它简化了网页界面的构建,提供了丰富的组件和易用的API。在1.4.5版本中,这个框架为开发者提供了更多的功能和改进,使得Web应用的开发更为高效。下面将详细介绍...
jQuery EasyUI 是一个基于 jQuery 的前端框架,它简化了网页用户界面开发的复杂性,提供了大量的可重用组件。在1.4.2版本中,API 中文版为开发者提供了详细的文档,帮助他们更好地理解和使用这个框架。下面将详细...