💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 6.3.1.快速使用 :id=start ```html <input id="demoCascader1" placeholder="请选择" class="layui-hide"/> <script> layui.use(['cascader'], function () { var $ = layui.jquery; var cascader = layui.cascader; cascader.render({ elem: '#demoCascader1', data: [{ value: 'beijing', label: '北京', children: [ { value: 'gugong', label: '故宫' }, { value: 'tiantan', label: '天坛' }, { value: 'wangfujing', label: '王府井' } ] }] }); }); </script> ``` ![](https://s2.ax1x.com/2019/08/28/mHdhnJ.png) ## 6.3.2.异步加载 :id=async ```html <input id="demoCascader1" placeholder="请选择" class="layui-hide"/> <script> layui.use(['cascader'], function () { var $ = layui.jquery; var cascader = layui.cascader; cascader.render({ elem: '#demoCascader1', reqData: function (values, callback, data) { // values是当前所有选中的值,data是当前选中的对象 $.get('xxxx.json', { id: data.value }, function(res){ callback(res.data); // 数据请求完成通过callback回调 },'json'); } }); }); </script> ``` 异步加载的数据格式为: ``` [ {value: 'beijing', label: '北京', haveChildren: true}, {value: 'jiangsu', label: '江苏', haveChildren: true} ] ``` 通过haveChildren字段来标识是否还有子节点,如果你的后台数据格式不是这样,可以在callback之前格式化: ```js cascader.render({ elem: '#demoCascader1', reqData: function (values, callback, data) { // values是当前所有选中的值,data是当前选中的对象 $.get('xxxx.json', { id: data.value }, function(res){ var newList = []; for(var i=0;i<res.data.length;i++){ var item = res.data[i]; newList.push({ value: item.id, label: item.name, haveChildren: item.haveChildren }); } callback(newList); // 数据请求完成通过callback回调 },'json'); } }); ``` ## 6.3.3.自定义分隔符 :id=format ```html <input id="demoCascader1" placeholder="请选择" class="layui-hide"/> <script> layui.use(['cascader'], function () { var $ = layui.jquery; var cascader = layui.cascader; cascader.render({ elem: '#demoCascader1', data: [], renderFormat: function (labels, values) { return labels.join(' / '); // 默认是用斜杠分割,可以自定义 } }); }); </script> ``` ## 6.3.4.搜索功能 :id=search ```html <input id="demoCascader1" placeholder="请选择" class="layui-hide"/> <script> layui.use(['cascader'], function () { var $ = layui.jquery; var cascader = layui.cascader; cascader.render({ elem: '#demoCascader1', data: [], filterable: true // 这个参数是开启搜索功能 }); // 自定义搜索 cascader.render({ elem: '#demoCascader1', data: [], filterable: true, reqSearch: function (keyword, callback, dataList) { // keyword是搜索的关键字,dataList是当前的全部数据集合 $.get('xxx.json', { keyword: keyword }, function(res){ callback(res); },'json') } }); }); </script> ``` 搜索后端接口返回的数据格式为: ```json [ {"value": "1,2", "label": "北京 / 王府井"}, {"value": "1,3", "label": "北京 / 故宫"} ] ``` 如果要标记关键字为红色:`<span class=\"search-keyword\">北京</span> / 王府井` ![](https://s2.ax1x.com/2019/08/28/mHd4B9.png) ## 6.3.5.省市区级联选择 :id=city ```html <input id="demoCascader1" placeholder="请选择" class="layui-hide"/> <script type="text/javascript" src="/assets/module/cascader/citys-data.js"></script> <script> layui.use(['cascader'], function () { var $ = layui.jquery; var cascader = layui.cascader; cascader.render({ elem: '#demoCascader1', data: citysData, itemHeight: '250px', filterable: true }); }); </script> ``` 省市区的数据已经封装好了,只需要引入数据的js即可,项目里面的数据value是区号,如果你的数据库直接存中文,可以使用下面的数据: [citys-data.js](http://whvse.gitee.io/html-test/file/citys-data.js) 未压缩(311kb)、[citys-data.min.js](http://whvse.gitee.io/html-test/file/citys-data.min.js) 压缩(136kb)。 如果想去掉区域,只显示省和市,可以用js处理一下数据: ```javascript // 去掉第三级的数据 for (var i = 0; i < citysData.length; i++) { for (var j = 0; j < citysData[i].children.length; j++) { delete citysData[i].children[j].children; } } cascader.render({ elem: '#demoCascader11', data: citysData }); ``` 如果一个页面同时有省市和省市区选择,去掉第三级的时候应该克隆一下数据: ```javascript var citysData2 = admin.util.deepClone(citysData); for (var i = 0; i < citysData2.length; i++) { for (var j = 0; j < citysData2[i].children.length; j++) { delete citysData2[i].children[j].children; } } cascader.render({ elem: '#demoCascader11', data: citysData2 }); ``` ## 6.3.6.全部方法 :id=method ```html <input id="demoCascader1" placeholder="请选择" class="layui-hide"/> <script> layui.use(['cascader'], function () { var $ = layui.jquery; var cascader = layui.cascader; var ins1 = cascader.render({ elem: '#demoCascader1', data: [] }); ins1.data; // 获取当前的数据 ins1.open(); // 展开 ins1.hide(); // 关闭 ins1.removeLoading(); // 移除加载中的状态 ins1.setDisabled(true); // 禁用或取消禁用 ins1.getValue(); // 获取选中的数据值 ins1.getLabel(); // 选取选中的数据名称 ins1.setValue('1,2'); // 设置值 }); </script> ``` ## 6.3.7.全部参数 :id=options 参数名称 | 介绍 | 默认值 --- | --- | --- elem | 需要渲染的元素 | data | 数据 | clearable | 是否开启清除 | true clearAllActive | 清除时清除所有列选中 | false trigger | 次级菜单触发方式,可选'hover' | 'click' disabled | 是否禁用 | false changeOnSelect | 是否点击每一项都改变值 | false filterable | 是否开启搜索功能 | false notFoundText | 搜索为空是提示文字 | '没有匹配数据' itemHeight | 下拉列表的高度 | '180px' reqData(values, callback, data) | 异步获取数据的方法 | reqSearch(keyword, callback, dataList) | 自定义搜索的方法 | renderFormat(labels, values) | 选择后用于展示的函数 | onChange(values, data) | 数据选择改变的回调 | onVisibleChange(isShow) | 展开和关闭的回调 |