`
阅读更多

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/

 

 

 

 

 

  • 大小: 669.5 KB
1
0
分享到:
评论
1 楼 蕃薯耀 2018-04-28  
Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框
Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点
EasyUI Combotree叶子节点增加单选框


=============
蕃薯耀

相关推荐

    Easyui combotree idField扩展Demo

    Easyui 是一个基于 jQuery 的前端框架,用于快速构建用户界面。Combotree 是 Easyui 提供的一个组件,它结合了下拉框(combobox)和树形结构(tree),常用于展示具有层级关系的数据,并允许用户进行选择。在这个...

    easyui_combotree_search

    本项目名为"easyui_combotree_search",主要涉及到jQuery、EasyUI、Combotree以及搜索功能的实现,特别是将树形结构与搜索框结合的应用。下面将详细阐述这些知识点。 1. **jQuery**:jQuery是一个快速、简洁的...

    easyui的combotree控件绑定json数据的例子

    Combotree控件将树形结构和输入框结合在一起,用户可以选择树中的一个或多个节点,然后在输入框中显示所选节点的文本。这对于处理如组织结构、地区分类等具有层次关系的数据非常实用。 要实现Combotree与JSON数据的...

    jQueryEasyUI—Combotree修正版

    总结来说,jQuery EasyUI的Combotree组件提供了一种树形下拉列表的界面,用户可以方便地选择多个项目。通过启用`checkbox`选项和`multiple`属性,我们可以实现多选功能。服务器端的代码负责提供JSON数据,前端则负责...

    Java>jquery-easyui_combotree异步树的生成代码示例(NEW)

    `jQuery EasyUI Combotree`组件因其简单易用、功能强大而成为开发者常用的选择之一。本文档将详细介绍如何利用jQuery EasyUI中的Combotree实现异步加载树形结构,并提供一个完整的示例。 #### 二、理解Combotree与...

    JQuery EasyUI combotree

    JQuery EasyUI 是一个基于 jQuery ...总的来说,JQuery EasyUI 的 Combotree 提供了一种优雅的方式来展示和选择层级结构的数据。结合博客中的内容,你可以深入学习如何在实际项目中有效地利用这个组件,提升用户体验。

    EasyUi combotree 实现动态加载树节点

    EasyUi 是一个基于 jQuery 的前端框架,它提供了一系列易于使用的组件,帮助开发者快速构建用户界面。其中,Combotree 是一个结合了下拉列表和树形结构的组件,常用于展示层级关系的数据,并且在实际应用中,往往...

    jquery-easyui_combotree异步树的生成代码

    ### jQuery-EasyUI Combotree 异步树生成详解 #### 一、Combotree 组件简介 在jQuery EasyUI框架中,Combotree组件是一个非常实用的功能组件,它结合了下拉列表(Combobox)与树形结构(Tree)的特点,能够实现...

    浅谈EasyUi ComBotree树修改 父节点选择的问题

    本文将探讨如何解决 EasyUI ComBotree 在选择父节点时自动选择子节点的问题。 首先,这个问题出现在当用户勾选父节点时,EasyUI 的默认行为会同时勾选所有子节点。在某些业务场景下,这并不符合需求,例如,可能...

    jquery easyui + Ztree +折线图

    《jQuery EasyUI、ZTree与折线图的综合应用》 在Web开发中,jQuery EasyUI、ZTree和折线图是三种常见的组件,它们分别用于构建用户界面、实现树形结构展示和数据可视化。本篇文章将深入探讨这些技术及其在实际项目...

    jquery-easyui_combotree异步树的生成代码示例(NEW)

    ### jQuery EasyUI Combotree 异步树生成详解 #### 一、概述 在Web开发中,树形结构是常用的数据展示方式之一,特别是在需要层级显示数据时尤为常见。jQuery EasyUI 是一个基于 jQuery 的 UI 插件集合,它简化了...

    jquery easyUI

    jQuery EasyUI 提供了一系列表单组件,如复选框(checkbox)、单选按钮(radio)、日期选择器(datebox)等,方便创建和验证表单。 ### 3. 主题系统 jQuery EasyUI 支持多主题,开发者可以通过修改或自定义 CSS ...

    Jquery easyUI api 下载

    jQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一...总之,jQuery EasyUI 是一个强大且易于使用的前端框架,其组件丰富,API 设计合理。通过深入学习和掌握 API,开发者可以构建出高效、美观的 Web 应用程序。

    jquery-easyui-1.4.5_easyuiapi_

    jQuery EasyUI 是一款基于 jQuery 的前端框架,它提供了丰富的用户界面组件,使得开发者可以快速构建出美观且功能强大的Web应用。在本文中,我们将深入探讨jQuery EasyUI 1.4.5版本的API,了解其核心功能、组件以及...

    Jquery EasyUI 异步树,适合大数据量无限级加载

    在IT行业中,jQuery EasyUI是一个基于jQuery的前端框架,它提供了丰富的UI组件,极大地简化了Web界面开发。本文将深入探讨“Jquery EasyUI 异步树”这一主题,特别是如何实现适合大数据量无限级加载的功能。 首先,...

    jQuery EasyUI 1.4.3 API

    - **表单组件**:包括输入框、复选框、单选框、下拉选择等,提供表单验证功能。 3. **API 使用** - **方法调用**:通过`.easyui`链式调用来操作组件,如`$("#element").dialog("open")`打开对话框。 - **属性...

    Jquery easyUI 离线包

    JQuery EasyUI 是一个基于 jQuery 的前端框架,它提供了一系列的UI组件,使得开发者能够快速构建功能丰富的Web应用。这个离线包包含了JQuery EasyUI的完整版本,具体为1.3.0,这是一个相对较旧但仍然广泛使用的版本...

    jquery-easyui资料和文档

    5. **表单(Form)**:表单组件可以帮助开发者快速创建和管理表单元素,如输入框、选择框、复选框等,同时支持数据验证和提交。 6. **按钮(Button)**:按钮组件提供了一种直观的方式来触发某些动作,可以配置为...

    jQuery EasyUI 1.4.5 版 API 中文版

    jQuery EasyUI 是一款基于 jQuery 的前端开发框架,它简化了网页界面的构建,提供了丰富的组件和易用的API。在1.4.5版本中,这个框架为开发者提供了更多的功能和改进,使得Web应用的开发更为高效。下面将详细介绍...

    jQuery EasyUI 1.4.2 版 API 中文版

    jQuery EasyUI 是一个基于 jQuery 的前端框架,它简化了网页用户界面开发的复杂性,提供了大量的可重用组件。在1.4.2版本中,API 中文版为开发者提供了详细的文档,帮助他们更好地理解和使用这个框架。下面将详细...

Global site tag (gtag.js) - Google Analytics