最近一个项目要在下拉框中添加复选框,然后在这个过程中,发现越来越多的实现方法,在这里记录一下combobox。

文章最后我会贴一下代码。

先贴一个实例,直接运行就是Jquery的复选框就可以出现了,这是最基本的功能。

function initCombobox(id){var value = "";// 加载下拉框复选框$('#'+id).combobox({panelHeight:'100',// 设置为固定高度,combobox出现竖直滚动条,auto自适应multiple:true,// 设置多选// formatter方法就是实现了在每个下拉选项前面增加checkbox框的方法formatter: function (row) {//格式化选项,加载复选框var opts = $(this).combobox('options');return '<input type="checkbox" class="combobox-checkbox">' + row[opts.textField]},onLoadSuccess: function () {  // 下拉框数据加载成功调用var opts = $(this).combobox('options');var target = this;var values = $(target).combobox('getValues');// 获取选中的值的values$.map(values, function (value) {var el = opts.finder.getEl(target, value);el.find('input.combobox-checkbox')._propAttr('checked', true);})},onSelect: function (row) { // 选中一个选项时调用var opts = $(this).combobox('options');// 获取选中的值的values$("#"+id).val($(this).combobox('getValues'));// 设置选中值所对应的对应的复选框为选中状态var el = opts.finder.getEl(this, row[opts.valueField]);el.find('input.combobox-checkbox')._propAttr('checked', true);},onUnselect: function (row) {// 不选中一个选项时调用var opts = $(this).combobox('options');// 获取选中的值的values$("#"+id).val($(this).combobox('getValues'));var el = opts.finder.getEl(this, row[opts.valueField]);el.find('input.combobox-checkbox')._propAttr('checked', false);}});
}

1.我们上述实例,调用了formatter属性

$('#cc').combobox({formatter: function(row){var opts = $(this).combobox('options');return row[opts.textField];}
});

在这里就要讲一下row这个参数,这个参数是formatter自带的,是代表了当前处理行的参数。

包括value,text,selected,disable。

value 就是传给后台的值,text就是显示在页面上的值,selected是代表选中,disable代表禁用。

取值和赋值的方式就是:

row.value
row.text
row.selected
row.disable

2.我们上述实例,调用了multiple属性

true: 下拉框可以选多个

3.调用了panelHeight属性:

auto: 高度自适应,比如你有100个,就会出现100个的高度

4.继续其他属性:

data:可以加载本地数据,即固定值。

filter:过滤器,可以过滤不显示的数据,一般后台就会处理这件事。q:用户输入的文本

$('#cc').combobox({filter: function(q, row){var opts = $(this).combobox('options');return row[opts.textField].indexOf(q) == 0;}
});

属性大概常用就这些,说一下事件:

5.onBeforeLoad:在请求加载数据之前触发,返回 false 则取消加载动作

// 比如权限不符合,可以返回false,不再加载数据。也可以在请求 后台前的赋值

$('#cc').combobox({onBeforeLoad: function(param){param.id = 2;param.language = 'js';}
});

6.onLoadSuccess:当远程数据加载成功时触发

// 这个在上述实例中使用了

7.onLoadError:当远程数据加载失败时触发

8.onSelect:当用户选择一个列表项时触发

9.onUnselect:当用户取消选择一个列表项时触发

这几个事件都很重要,可以参照实例

下面是方法:

10.getData:返回加载的数据.比如你已经选中两个了,调用方法返回的数据就是你现在选中的数据。注意是你选中了的!

11.loadData:加载数据,这个数据是你给的。

data可以是一行,也可以是多行。给个截图参照下:

$('#cc').combobox('loadData', data);

12.reload:远程获取数据

$('#cc').combobox('reload');  // 请求原来的Url
$('#cc').combobox('reload','get_data.php');

13.setValue / setValues:设置组合框的值

$('#cc').combobox('setValues', ['001','002']);
$('#cc').combobox('setValue', '001');

14.clear:清空

$('#'+id).combobox("clear");

15.select / unselect 设置选中/取消选中

$("#"+id).combobox('setValues', selecteditem);

最后贴一下我自己的代码,如有需要优化的可以评论或私聊我:

var idsCombo = ['ptlx'];$(function(){comboboxGo();
});function comboboxGo(){for(var ind in idsCombo){initCombobox(idsCombo[ind]);}
}function clearComboboxGo(){for(var ind in idsCombo){clearFirstOption(idsCombo[ind]);}
}function clearFirstOption(id){$('#'+id).combobox("clear");var valueJson = $('#'+id).combobox('getData');valueJson[0].selected=false;valueJson[0].disabled=true;for(var i in valueJson){valueJson[i].selected=false;}$('#'+id).combobox('loadData', valueJson);// 获取选中的值的values
}function initCombobox(id){// 加载下拉框复选框$('#'+id).combobox({panelHeight:'100',// 设置为固定高度,combobox出现竖直滚动条multiple:true,// formatter方法就是实现了在每个下拉选项前面增加checkbox框的方法formatter: function (row) {var opts = $(this).combobox('options');if(row[opts.valueField]==''){//disabled style="display:none" selected valuereturn}return '<input type="checkbox" class="combobox-checkbox">' + row[opts.textField]},onLoadSuccess: function () {  // 下拉框数据加载成功调用var opts = $(this).combobox('options');var target = this;var values = $(target).combobox('getValues');// 获取选中的值的values$.map(values, function (value) {var el = opts.finder.getEl(target, value);el.find('input.combobox-checkbox')._propAttr('checked', true);})},onSelect: function (row) { // 选中一个选项时调用var localdata = $('#'+id).combobox('getData');var opts = $(this).combobox('options');// 获取选中的值的values$("#"+id).val($(this).combobox('getValues'));for (var local in localdata){// 对当前的选项数据操作if(localdata[local].value==''){localdata[0].selected=false;localdata[0].disabled=true;continue;}if(localdata[local].value==row.value){localdata[local].selected=true;break;}}// 设置选中值所对应的复选框为选中状态var el = opts.finder.getEl(this, row[opts.valueField]);el.find('input.combobox-checkbox')._propAttr('checked', true);$('#'+id).combobox("clear");// 清空输入框$('#'+id).combobox('loadData', localdata);// 加载数据},onUnselect: function (row) {// row 就是哪一行的对象// 不选中一个选项时调用var opts = $(this).combobox('options');// 获取选中的值的values$("#"+id).val($(this).combobox('getValues'));var localdata = $('#'+id).combobox('getData');for (var local in localdata){ // 对当前的选项数据操作if(localdata[local].value==''){continue;}if(localdata[local].value==row.value){// 如果值相同,就置falselocaldata[local].selected=false;break;}}var el = opts.finder.getEl(this, row[opts.valueField]);el.find('input.combobox-checkbox')._propAttr('checked', false);}});
}

有想交流的朋友,可以和我私聊或者评论。

Jquery combobox的使用总结----持续更新相关推荐

  1. Java实现动态加载页面_[Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新)...

    [Java教程]动态加载页面数据的小工具 javascript + jQuery (持续更新) 0 2014-05-07 18:00:06 使用该控件,可以根据url,参数,加载html记录模板(包含 ...

  2. jQuery基础文档(持续更新)

    文章目录 jQuery基础文档(持续更新) 1 jQuery入门仪式: jQuery基础文档(持续更新) 1 jQuery入门仪式: 还是先上一段代码吧,对照这看: <!DOCTYPE html ...

  3. Java 最常见的 10000+ 面试题及答案整理:持续更新

    Java面试题以及答案整理[最新版]Java高级面试题大全(2021版),发现网上很多Java面试题都没有答案,所以花了很长时间搜集,本套Java面试题大全,汇总了大量经典的Java程序员面试题以及答 ...

  4. GitHub:GitHub简介、使用方法、经验总结(图文教程)之详细攻略(持续更新!)

    GitHub:GitHub简介.使用方法.经验总结(图文教程)之详细攻略(持续更新!) 目录 GitHub简介 1.GitHub发展历程 2.GitHub特点 3.GitHub六大基本功能 4.Git ...

  5. JavaScript 编码规范大全-Eslint(持续更新,欢迎关注点赞加评论)

    JavaScript 编码规范大全(持续更新,欢迎关注点赞加评论) 文章目录 JavaScript 编码规范大全(持续更新,欢迎关注点赞加评论) 前言 0. 相关工具 1. 类型 2. 引用 3. 对 ...

  6. 若依开发文档手册[持续更新:拥抱初次使用若依的开发者]

    这篇布局太乱看着太累了 重新把为文档布局调整了一下 之后的更新内容会在新地址发布: [https://blog.csdn.net/weixin_42059737/article/details/988 ...

  7. Android面试总结(持续更新修改)

    ###Android面试总结(持续更新修改) 1.Android 的四大组件是哪些,它们的作用? ①Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为 ...

  8. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新

    文档描述 本文是关注微信小程序的开发和面试问题, 由基础到困难循序渐进, 适合面试和开发小程序. 并有热点框架(vue react node.js 全栈)前端资源以及后端视频资源和源码 并基于前端进阶 ...

  9. 前端面试题精编2020(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)持续更新

    文档描述 本文是关注微信小程序的开发和面试问题, 由基础到困难循序渐进, 适合面试和开发小程序. 并有热点框架(vue react node.js 全栈)前端资源以及后端视频资源和源码 并基于前端进阶 ...

最新文章

  1. 启动马达接线实物图_电工知识:三相电机正反转的完整接线,实物讲解,原理分析...
  2. Android移动开发之【Android实战项目】DAY15-翻页效果原理
  3. 关于this的指向问题
  4. vs 2012 控制台自动关闭
  5. centos7挂载nas存储_Geeki说丨浅谈几种存储添加主机映射方式
  6. 两种类型的Spark RDD task解析以及iterator解析 -- (视频笔记)
  7. PyCharm pyqt5用label控件显示图片 QPixmap 串口通信指示灯
  8. php树菜单转化为一维菜单,php树型菜单 - iturtle的个人空间 - OSCHINA - 中文开源技术交流社区...
  9. IPsec ***数据传输过程
  10. 平面设计师必备,剪纸风格素材
  11. php基于错误的盲注,盲注基本原理
  12. bin和sbin区别
  13. 【Nginx】上传文件的大小限制
  14. python3.6 asyncio paramiko_网工的Python之路:Concurrent.Futures
  15. python 省份排序_MySQL
  16. java excel 数组公式_Apache poi中的数组公式
  17. mysql neq_ecshop中smarty比较操作符(eq,ne,neq)含义
  18. 我的世界服务器修改nbt,我的世界NBT教程 关于NBT作用与内容介绍
  19. 启动QQ时无法访问个人文件夹XXX,是否自动修复个人文件夹权限
  20. 熔断器-hystrix使用

热门文章

  1. Jenkins发版本
  2. java 不能实例化类型_java不能实例化类型
  3. idea中springboot整合Axis2框架一
  4. 首个“双智”协同蓝皮书发布,车路行三位一体构建数字化城市交通建设新标杆
  5. 一览IT名人的教育成长经历
  6. 彬月论坛(开源)-asp.net
  7. oracle dsg ogg,ogg 、 Shareplex和DSG RealSync 对比
  8. Camunda工作流引擎一
  9. VS2017 Web项目添加引用项目后,引用上有黄色的感叹号小图标
  10. matlab-GUI编写简单计算器