问题描述:
最近在开发一个体育管理系统,页面上有比赛开始日期,结束日期,比赛所在省份,城市等信息。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给下拉框绑定初始值的,欢迎在评论区解答一下,万分感谢!