本文详解Layui下拉列表的数据回显与级联交互实现。涵盖静态HTML手动设置selected属性、动态页面结合Thymeleaf遍历渲染,以及通过监听一级目录事件动态加载二级数据并调用form.render('select')完成渲染的核心逻辑。
静态页面下的Layui下拉列表回显
静态网页结合Layui渲染方式
HTML代码部分
<div class="layui-form-item">
<label class="layui-form-label">选择框</label>
<div class="layui-input-block">
<select id="t" name="quiz2">
<option value="">请选择市</option>
<option value="2">杭州2</option>
<option value="3">杭州3</option>
<option value="4">杭州4</option>
<option value="5">杭州5</option>
</select>
</div>
</div>
JavaScript代码部分
<script>
// 遍历select
$("#t").each(function() {
// this代表的是<option></option>,对option再进行遍历
$(this).children("option").each(function() {
// 判断需要对那个选项进行回显
if (this.value == 2) {
console.log($(this).text());
// 进行回显
$(this).attr("selected","selected");
}
});
})
</script>
动态页面中的级联下拉列表实现
动态网页结合Layui渲染,涉及级联下拉列表场景
后台将第一个下拉列表的数据传输到前台
public String getApiInfoByTypePage(@PathVariable String type, Model model, HttpServletRequest request) {
List<DopApiType> typeList1 = apiService.findApiTypeByPid(1);
log.error(typeList1);
model.addAttribute("typeList1", typeList1);
}
前台页面采用Thymeleaf遍历方式加载数据,随后由Layui自动完成渲染
<div class="layui-input-inline">
<select id="quiz1" name="quiz1" lay-filter="quiz1">
<option value="1">请选择一级服务目录</option>
<option th:each="list1:${typeList1}" th:value="${list1.typeId}" th:text="${list1.typeName }"></option>
</select>
</div>
<div class="layui-input-inline" lay-filter="inline1">
<select id="quiz2" name="quiz2" lay-filter="quiz2">
<option value="0">请选择二级服务目录</option>
</select>
</div>
一级目录监听与二级数据加载
一级下拉列表的监听事件处理
//监听一级服务目录下拉列表的选择时间
form.on('select(quiz1)', function (data) {
var pId = data.value;// 一级列表的id
$.post('/getApiTypeByPid', {'pId': pId, '': 2}, function (msg) {// 请求二级列表的数据
// console.log(msg);
$('#quiz2').empty();// 将二级列表的内容清空
for (var i in msg) {// 遍历数据赋值给二级列表的内容
var $content = $('<option value="' + msg[i].typeId + '">' + msg[i].typeName + '</option>');
$('#quiz2').append($content);
}
form.render('select');// 注意:数据赋值完成之后必须调用该方法,进行layui的渲染,否则数据出不来
});
});
数据回显核心逻辑与渲染
数据回显的核心逻辑(Java端根据目录格式自行编写)
JavaScript部分代码
// 服务目录的数据回显
var sesType = [[${type}]];
var sesType1 = [[${type1}]];// 一级目录id
var sesStatus = [[${status}]];
// 一级目录回显
$("#quiz1").each(function () {// 遍历select
$(this).children("option").each(function () {// 遍历option
if (this.value == sesType1) {// 跟后台传过来的id相同就显示selected
// console.log("一级目录"+$(this).text());
$(this).attr("selected", "selected");
$.post('/getApiTypeByPid', {'pId': sesType1, '': 2}, function (msg) {// 根据一级目录的id获取二级目录的信息
// console.log(msg);
$('#quiz2').empty();// 清空
for (var i in msg) { // 遍历,进行赋值
if (msg[i].typeId == sesType) {// 判断要回显的二级目录
var $content1 = $('<option value="' + msg[i].typeId + '" selected="selected">' + msg[i].typeName + '</option>');
$('#quiz2').append($content1);
} else {
var $content = $('<option value="' + msg[i].typeId + '">' + msg[i].typeName + '</option>');
$('#quiz2').append($content);
}
}
form.render('select');// 注意:一定要调用该方法进行中心渲染,否则数据是显示不出来的
});
}
});
});
以上这篇基于Layui的下拉列表的数据回显方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。