使用layui select组件,级联加载多级下拉树,每次只加载一级,麻烦给个demo
时间: 2024-09-11 17:08:59 浏览: 51
JavaScript XML实现两级级联下拉列表
Layui 是一个非常流行的前端 UI 框架,它的 select 组件支持级联加载多级下拉树的功能。以下是一个简单的使用 Layui select 组件实现级联下拉树的 DEMO 示例:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Layui select 级联加载多级下拉树示例</title>
<link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css">
</head>
<body>
<div class="layui-container">
<div class="layui-row">
<div class="layui-col-xs12">
<label class="layui-form-label">选择城市</label>
<div class="layui-input-inline">
<select name="city" id="citySelect" lay-filter="citySelect">
<option value="">请选择省份</option>
</select>
</div>
</div>
</div>
</div>
<script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script>
<script>
layui.use(['form', 'layer', 'jquery'], function(){
var $ = layui.jquery;
var form = layui.form;
// 模拟从服务器获取数据
function getData(level, father) {
var html = '';
for(var i = 0; i < 4; i++) {
html += '<option value="' + level + i + '">' + level + i + '</option>';
}
return html;
}
// 省份数据
var data1 = getData('省', '');
// 初始化城市下拉框
$('#citySelect').val('1');
form.render('select');
// 级联操作
var data2 = {};
$('#citySelect').change(function(){
// 根据选择的省份值来显示对应的城市数据
var selectVal = $(this).val();
if(selectVal) {
// 用layer弹窗显示下一级数据
layer.open({
type: 1,
area: ['80%', '80%'],
title: '请选择城市',
content: '<select name="city" lay-filter="citySelect2">' +
'<option value="">加载中...</option>' +
data2[selectVal] || getData('市', selectVal) +
'</select>',
end: function(){
// 如果有下一级,则继续级联
var citySelect2 = document.querySelector('[name="city"][lay-filter="citySelect2"]');
citySelect2.onchange = function(){
var cityVal = $(this).val();
// 更改数据,实际应用中是去服务器获取数据
data2[cityVal] = getData('区', cityVal);
// 重新赋值并渲染
$(this).html(data2[cityVal]);
form.render('select');
};
}
});
}
});
});
</script>
</body>
</html>
```
在这个 DEMO 中,我们首先定义了一个名为 `citySelect` 的下拉框,并且通过 `lay-filter` 属性指定了一个过滤器名称。当下拉框的值发生变化时,会触发一个级联加载的操作,这里使用了 Layui 的 layer 组件来弹出一个新的下拉框,并通过 `change` 事件实现级联效果。
需要注意的是,上述代码仅作为一个示例,其中的数据是通过 `getData` 函数模拟生成的。在实际应用中,您需要从服务器动态获取数据,并替换模拟数据部分。
阅读全文