闽公网安备 35020302035485号
问题描述:
最近在开发一个体育管理系统,页面上有比赛开始日期,结束日期,比赛所在省份,城市等信息。UI框架用的是layui。因为要选择比赛日期,所以用到了layui的日期控件laydate,然后省份,城市用的是下拉框。现在出现的问题是用户需要重新编辑已保存的比赛信息,这时需要先把数据库中保存的信息加载到页面显示出来。但我们现在发现,当用了日期控件后,用jQuery绑定下拉框的初识值时,绑定的方法竟然无效。
如下是jQuery绑定下拉框初始值的方法:
// 堆代码 duidaima.com
//==============给下拉框赋选中值===========
function BindSelectedItem(controlID, text, $) {
var emptyText = $.trim(text);
if (emptyText != '') {
var count = $("#" + controlID + " option").length;
for (var i = 0; i < count; i++) {
if ($("#" + controlID).get(0).options[i].text == emptyText) {
$("#" + controlID).get(0).options[i].selected = true;
break;
}
}
}
}
前端页面调用上面的方法:
$(document).ready(function() {
BindSelectedItem("ddlProvince", '@Model.TeamInfo.Province', $); //绑定省份
BindSelectedItem("ddlCity", '@Model.TeamInfo.City', $); //绑定城市
});
上面这个代码,如果是在没有使用layui的日期控件时是没问题的,也就是说可以正常的给下拉框绑定初始值。但是如果在页面中使用了layui的日期控件,则上面的绑定方法会无效。而且好像是只对下拉框无效,如果是在$(document).ready中给文本框控件进行绑定初始值是有效的。试了各种绑定下拉框初始值的方法,不管是直接给下拉框用jquery的val()方法赋值,还是说使用select属性,都无效果,最后没有办法了,只能使用原生js的方法来实现。具体代码如下:
<script>
document.addEventListener("DOMContentLoaded", function () {
var gameType = document.getElementById("ddlGameType");
if (gameType) {
gameType.value = '@Model.LeagueInfo.GameType'; // 确保元素存在后再设置值
}
var province = document.getElementById("ddlProvince");
if (province) {
province.value = '@Model.LeagueInfo.Province'; // 确保元素存在后再设置值
}
var city = document.getElementById("ddlCity");
if (city) {
city.value = '@Model.LeagueInfo.City'; // 确保元素存在后再设置值
}
});
</script>
通过上面这个办法,就可以解决在页面中使用layui日期控件无法给下拉框绑定初始值的问题。如果有谁知道为什么在layui中使用了日期控件后,就无法用jquery给下拉框绑定初始值的,欢迎在评论区解答一下,万分感谢!