DWZ-JUI 树形Checkbox组件 无法一次获取所有选中的值的解决方法

简介:

UI中 tree Checkbox 组件

 

在官方文档中提供的oncheck事件中只能够获取当前点击的权限值,而无法获取其他选中的值

<ul class="tree treeFolder treeCheck expand" oncheck="kkk">
<li><a >框架面板</a>
<ul>
<li><a tname="name" tvalue="value1" checked="true">我的主页</a></li>
<li><a tname="name" tvalue="value2">页面一</a></li>
<li><a tname="name" tvalue="value3">替换页面一</a></li>
<li><a tname="name" tvalue="value4">页面二</a></li>
<li><a tname="name" tvalue="value5">页面三</a></li>
</ul>
</li>
                       <li><a>权限5</a>
                            <ul>
                                <li><a tname="name" tvalue="权限5-1" checked="true">权限5-1</a></li>
                                <li><a tname="name" tvalue="权限5-2" checked="true">权限5-2</a></li>
                            </ul>
                        </li>
<li><a tname="name" tvalue="test1">Test 1</a>
<ul>
<li><a tname="name" tvalue="test1.1">Test 1.1</a>
<ul>
<li><a tname="name" tvalue="test1.1.1" checked="true">Test 1.1.1</a></li>
<li><a tname="name" tvalue="test1.1.2" checked="false">Test 1.1.2</a></li>
</ul>
</li>
<li><a tname="name" tvalue="test1.2" checked="true">Test 1.2</a></li>
</ul>
</li>
<li><a tname="name" tvalue="test2" checked="true">Test 2</a></li>
</ul>

<script type="text/JavaScript">
function kkk(){
var json = arguments[0], result="";
// alert(json.checked);


$(json.items).each(function(i){
result += "<p>name:"+this.name + " value:"+this.value+" text: "+this.text+"</p>";
});
$("#resultBox").html(result);

}
</script>

 

如此,本人在JUI原来的基础上增加了 一个名为 allItems的数组,其存储的格式和items的格式一个,只是items存储的是当前选中的值,而allItems存储的是所有选中的值.

代码如下:

dwz.tree.js文件中

setTimeout(function () {
                     if ($this.hasClass("treeCheck")) {
                         var checkFn = eval($this.attr("oncheck"));
                         if (checkFn && $.isFunction(checkFn)) {

                             $("div.ckbox", $this).each(function () {
                                 var ckbox = $(this);
                                 ckbox.click(function () {
                                     var checked = $(ckbox).hasClass("checked");
                                     var items = [];

 

                                     //增加allItems存储当前选中的所有值

                                     var allSelectedItems = [];

                                     //获取所有选中的boxes

                                     var allCheckedBoxes = $("div.checked", $this);

                                     //清除所有旧数据

                                     allSelectedItems.splice(0);

                                     if (allCheckedBoxes.size() > 0) {

                                         $(allCheckedBoxes).each(function () {

                                             //增加数据到数组中

                                             allSelectedItems.push({ name: $(this).find("input").eq(0).attr("name"), value: $(this).find("input").eq(0).val(), text: $(this).find("input").eq(0).attr("text") });

                                         });

                                     }

                                     if (checked) {

                                         var tnode = $(ckbox).parent().parent();
                                         var boxes = $("input", tnode);
                                         if (boxes.size() > 1) {
                                             $(boxes).each(function () {
                                                 items[items.length] = { name: $(this).attr("name"), value: $(this).val(), text: $(this).attr("text") };
                                             });
                                         } else {
                                             items = { name: boxes.attr("name"), value: boxes.val(), text: boxes.attr("text") };
                                         }
                                     }

                                     //增加一个allItems:allSelectedItems 
                                     checkFn({ checked: checked, items: items,allItems:allSelectedItems });
                                 });
                             });
                         }
                     }

 

在把官方的Demo中的kkk()改造一下就可以获取到所有选中的值了,代码如下:

<script type="text/javascript">
function kkk(){
var json = arguments[0], result="",allResult="";
// alert(json.checked);


$(json.items).each(function(i){
result += "<p>name:"+this.name + " value:"+this.value+" text: "+this.text+"</p>";
});

 

$(json.allItems).each(function(i){
allResult+= "<p>name:"+this.name + " value:"+this.value+" text: "+this.text+"</p>";
});


alert("当前选中的值:" + result + "  所有选中的值:"+allResult);

}
</script>

 

最终结果:

 

到此已经完美获取到了想要的数据.(图中树形与Demo数据不同,但是结构是一样的,不影响结果)

分类:  Jquery

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/p/6163963.html ,如需转载请自行联系原作者
相关文章
|
3月前
element组件库笔记一:element 框架中table表格复选框选中后,切换下一页之前选中复选框和数据消失的问题
这篇文章介绍了在Element UI框架中,如何解决表格组件复选框在分页时选中状态丢失的问题。
301 0
|
7月前
Qt控件(按钮、单选、复选、list、tree、table)
Qt控件(按钮、单选、复选、list、tree、table)
116 2
|
6月前
|
前端开发 JavaScript
【定制需求】el-tree 树形控件实现:每级可单独选择,选择父级不选中子集,子集全部选中不自动选中父级,手写按钮可支持子集全选,以及取消子集全选,el-tree 树形控件取消父子级联动选择
【定制需求】el-tree 树形控件实现:每级可单独选择,选择父级不选中子集,子集全部选中不自动选中父级,手写按钮可支持子集全选,以及取消子集全选,el-tree 树形控件取消父子级联动选择
449 0
|
8月前
el-cascader组件实现点击、递归勾选联动子集children所有选项被选中。
el-cascader组件实现点击、递归勾选联动子集children所有选项被选中。
|
前端开发
Element-ui中 树形控件(Tree)实现只显示某一层级复选框且单选
Element-ui中 树形控件(Tree)实现只显示某一层级复选框且单选
1745 0
Element-ui中 树形控件(Tree)实现只显示某一层级复选框且单选
Vant UI 中 van-collapse 下拉折叠面板如何默认展开第一项
Vant UI 中 van-collapse 下拉折叠面板如何默认展开第一项
864 0
Vant UI 中 van-collapse 下拉折叠面板如何默认展开第一项
|
JSON JavaScript 前端开发
继续对dwz封装树形下拉框
继续对dwz封装树形下拉框
172 0
继续对dwz封装树形下拉框
|
API
对dwz的combox组件扩展属性
对dwz的combox组件扩展属性
133 0
|
算法 .NET
关于Winform下,获取Treeview中CheckBox选中项的“.NET研究”技巧
背景 今天,在做一个指纹管理平台的界面上,遇到了一些问题,因为公司的基础库中没有针对Winform平台的操作,所以在一个部门选择的场景中,关于如何获取部门TreeView中被选中的项目被难住了。所幸还有一个神器叫做搜索引擎,故谷歌一番,发现Asp.net下的这个问题很好解决,但是关于Winform平台下的类似问题,如凤毛麟角啊! 当然,今天我也是查了很久,终于发现了两篇不错的文章,帮助我解决了这个问题,不敢独享,结合自己对使用其方法的心得,特意记录下来,并通过一个小例子和大家一起分享。
1180 0
|
算法 .NET
一起谈.NET技术,关于Winform下,获取Treeview中CheckBox选中项的技巧
背景 今天,在做一个指纹管理平台的界面上,遇到了一些问题,因为公司的基础库中没有针对Winform平台的操作,所以在一个部门选择的场景中,关于如何获取部门TreeView中被选中的项目被难住了。所幸还有一个神器叫做搜索引擎,故谷歌一番,发现Asp.net下的这个问题很好解决,但是关于Winform平台下的类似问题,如凤毛麟角啊! 当然,今天我也是查了很久,终于发现了两篇不错的文章,帮助我解决了这个问题,不敢独享,结合自己对使用其方法的心得,特意记录下来,并通过一个小例子和大家一起分享。
1058 0