input搜索下拉提示框,支持拼音检索、过滤、级联、自定义数据源的ajax异步下拉展示

神话无名 发布于 2018/06/07 16:28
阅读 578
收藏 3

为解决大数据量下拉字典效率及操作问题,整理出通用的数据字典模块,所有字典数据可在数据库维护,在大数据量时采用分页下拉的展示方式,同时支持拼音简拼搜索,代码项、代码值搜索等,支持无限层级级联,支持多选、过滤等等、自定义数据表,只要你能想到的,几乎都可以实现,兼容全部主流浏览器(IE5/6/7除外)。 
查看演示

模块加载名称:dic

基础参数

dic数据字典模块通过定义input的class属性为DMinput,来自动加载代码,id定义规则为code_加上数据库代码表里代码类别字段,如code_XZQH,其中XZQH为数据库中定义行政区划的代码类别。name定义规则为code_加该字段的自定义名字。

引用文件:

 

引用js和css文件

  1.  
  2.  
  3. dwr/engine.js
  4.  
  5.  
  6. dwr/util.js
  7.  
  8.  
  9. dwr/interface/SysCodeInfoService.js
  10.  
  11.  
  12. js/plugins/code/mootools.js
  13.  
  14.  
  15. js/plugins/code/dic.js
  16.  
  17.  
  18. js/plugins/code/EWSelect.css
  19.  

 

使用效果

 

larryMS code

  1. 代码表
  2.  

可以实现翻页、拼音简拼搜索、代码项和代码值的快速搜索,支持百万级的字典表下拉检索。

使用方法

 

字段定义

  1. 定义下拉字典项字段:
  2. input type="text" class="DMinput layui-input" id="code1_XZQH" name="code_xzqh1"
  3. class需要添加DMinput,id定义需为code开头,之后为数据库中代码表的代码类型,这里示例为XZQH,name定义为code开头,之后为该字段定义的名字。
  4.  

 

前缀过滤方法

 

前缀过滤

  1. input type="text" class="DMinput layui-input" id="code2_XZQH" name="code_xzqh2" filterDM="42____"
  2. 前缀过滤只需要增加filterDM属性,过滤规则参考sql规则,这里42____标示检索前两位为42开头的数据,这样可以实现下拉户籍为湖北省的行政区划。
  3. 过滤效果如下:
  4. 代码表前缀过滤
  5.  

 

后缀过滤方法

 

后缀过滤

  1. input type="text" class="DMinput layui-input" id="code2_XZQH" name="code_xzqh2" filterDM="42____"
  2. 前缀过滤只需要增加filterDM属性,过滤规则参考sql规则,这里__0000标示检索后四位为0000的数据,这样根据行政区划的规则可以实现下拉所有省份信息。
  3. 过滤效果如下:
  4. 代码表后缀过滤
  5.  

 

多选

 

多选

  1. input type="text" class="DMinput layui-input" id="code4_XZQH" name="code_xzqh4" Multi="true"
  2. 多选只需要增加Multi="true"属性。
  3. 多选效果如下:
  4. 代码表多选
  5.  

 

默认

 

默认

  1.  
  2. input type="hidden" id="xzqh5" value="330000"
  3. 页面加载完给默认值时需要定义一个隐藏域,id为需要赋值的文本框的name并去掉code_。上面为给name为code_xzqh5的下拉框赋代码值为330000。
  4. 默认赋值效果如下:
  5. 代码表多选
  6.  

 

多级级联

 

级联

  1.  
  2. 多级级联这里以行政区划省、市、县三级为例,行政区划代码一共6位,前两位代码省份、中间两位代码市、最后两位代码县,如420105里以42开头代表湖北省、以4201开头代表湖北省武汉市、420105代表湖北省武汉市的汉阳区。级联的原理为选中省份后通过js动态为市增加filterDM属性,filterDM值为所选择省份的前两位+“__00”,这样市文本框就会根据filterDM过滤出该省份下所有市级地区。
  3. 县级级联同样的道理,当选择市级区划后,通过js动态为县增加filterDM属性,filterDM值为所选择市的前四位+“__”,这样市文本框就会根据filterDM过滤出该市下所有县级地区。js如下,在省、市文本框失去焦点时调用。
  4. window.getShi =function(){
  5. if($("#EW_xzqh6").val()!=''){
  6.  
  7. $("#code7_XZQH").attr("filterDM",($("#EW_xzqh6").val()).substring(0,2)+"__00");
  8. }else{
  9.  
  10. $("#code7_XZQH").attr("filterDM",'a');
  11. }
  12.  
  13. };
  14. window.getXian =function(){
  15. if($("#EW_xzqh7").val()!=''){
  16.  
  17. $("#code8_XZQH").attr("filterDM",($("#EW_xzqh7").val()).substring(0,4)+"__");
  18. }else{
  19.  
  20. $("#code8_XZQH").attr("filterDM",'a');
  21. }
  22.  
  23. };
  24. 级联效果如下:
  25. 代码表级联
  26.  

 

自定义数据源表

 

默认

  1.  
  2. 以上效果都是基于特定的代码表里获取数据的,现在演示的是可自定义代码表及码值字段等信息。
  3. input type="text" class="DMinput layui-input" id="code10_org_info~superiororg =-00001- and orgname like -%派出所-~orgno~orgname" name="code_xzqh10"
  4. 在定义ID的时候将表名、字段、条件等信息,定义规则为以code开头,后面跟着的org_info为表名,表名后面以 ~为分隔符, superiororg =-00001- and orgname like -%派出所-为sql条件,表示查询org_info的条件为superiororg='00001'并且orgname为派出所的,这里用-代替单引号,后面orgno是作为code值的字段,orgname为代码名的字段。
  5. 级联后台数据获取如下:
  6. 数据库
  7. 前端展示如下:
  8. 自定义下拉
加载中
0
爱好3者
爱好3者

好是挺好的,挺适合我们现在做的政府行业风格,但是没找到源码在哪

返回顶部
顶部