/* * @version: 1.2 * @Author: tomato * @Date: 2018-4-24 22:56:00 * @Last Modified by: tomato * @Last Modified time: 2018-5-26 18:08:43 */ //无限级下拉框 layui.define(['jquery', 'form'], function(exports){ var MOD_NAME = 'selectN'; var $ = layui.jquery; var form = layui.form; var obj = function(config){ //当前选中数据值名数据 this.selected =[]; //当前选中的值 this.values = []; //当前选中的名 this.names = []; //当前选中最后一个值 this.lastValue = ''; //当前选中最后一个值 this.lastName = ''; //是否已选 this.isSelected = false; //初始化配置 this.config = { //选择器id或class elem: '', //无限级分类数据 data: [], //默认选中值 selected: [], //空值项提示,可设置为数组['请选择省','请选择市','请选择县'] tips: '请选择', //是否允许搜索,可设置为数组[true,true,true] search:false, //选择项宽度,可设置为数组['80','90','100'] width:null, //为真只取最后一个值 last: false, //值验证,与lay-verify一致 verify: '', //事件过滤器,lay-filter名 filter: '', //input的name 不设置与选择器相同(去#.) name: '', //数据分隔符 delimiter: ',', //数据的键名 status=0为禁用状态 field:{idName:'id',titleName:'name',statusName:'status',childName:'children'}, //多表单区分 form.render(type, filter); 为class="layui-form" 所在元素的 lay-filter="" 的值 formFilter: null } //实例化配置 this.config = $.extend(this.config,config); //“请选择”文字 this.setTips = function(){ var o = this,c = o.config; if(Object.prototype.toString.call(c.tips)!='[object Array]'){ return c.tips; } else{ var i=$(c.elem).find('select').length; return c.tips.hasOwnProperty(i) ? c.tips[i] : '请选择'; } } //设置是否允许搜索 this.setSearch = function(){ var o = this,c = o.config; if(Object.prototype.toString.call(c.search)!='[object Array]'){ return c.search===true ? 'lay-search ' : ' '; } else{ var i=$(c.elem).find('select').length; if(c.search.hasOwnProperty(i)){ return c.search[i]===true ? 'lay-search ' : ' '; } } return ' '; } //设置是否允许搜索 this.setWidth = function(){ var o = this,c = o.config; if(Object.prototype.toString.call(c.width)!='[object Array]'){ return /^\d+$/.test(c.width) ? 'style="width:'+c.width+'px;" ' : ' '; } else{ var i=$(c.elem).find('select').length; if(c.width.hasOwnProperty(i)){ return /^\d+$/.test(c.width[i]) ? 'style="width:'+c.width[i]+'px;" ' : ' '; } } } //创建一个Select this.createSelect = function(optionData){ var o = this,c = o.config,f=c.field; var html = ''; html+= '
'; html+= ' '; html+= '
'; return html; }; //获取当前option的数据 this.getOptionData=function(catData,optionIndex){ var f = this.config.field; var item = catData; for(var i=0;i'; html += o.createSelect(c.data); $E.html(html); selected = typeof selected=='undefined' ? c.selected : selected; var index=[]; for(var i=0;i