编辑页复选框自动选中时select下拉框未正常启用问题
问题根因
现有逻辑仅给.ship_to_checkbox绑定了change事件,该事件只会在用户手动操作修改复选框选中状态时触发。页面初始加载时由后端模板直接渲染出的checked选中状态,不会触发change事件,因此#mj下拉框的禁用状态不会同步更新。
另外你贴出的JS代码末尾多写了一个多余的});,会触发语法错误,需要一并删除。
修复代码
把状态同步逻辑抽成可复用的函数,DOM加载完成后除了绑定变更事件,主动执行一次状态同步,覆盖初始渲染的场景:
<script type="text/javascript"> $(document).ready(function() { // 同步下拉框禁用状态的通用逻辑 const syncMjSelectState = () => { const isCheckboxChecked = $(".ship_to_checkbox").prop("checked"); $("#mj").prop("disabled", !isCheckboxChecked); } // 绑定用户手动操作时的状态更新 $(".ship_to_checkbox").on("change", syncMjSelectState); // 初始化时主动执行一次,处理页面默认选中的场景 syncMjSelectState(); }); </script>
注意事项
- 原JS代码末尾冗余的
});必须删除,否则会抛出语法错误导致整段逻辑失效 - 如果页面存在多个class为
ship_to_checkbox的复选框,需要确认选择器匹配的是和#mj关联的那一个,避免状态同步出错
内容的提问来源于stack exchange,提问作者Manoj Jangid
相关产品推荐
相关产品推荐

