如何在编辑记录时从数据库加载并高亮显示已选列表项

云晨姑娘_5630

云晨姑娘_5630

2026-07-31

271人浏览

原创

如何在编辑记录时从数据库加载并高亮显示已选列表项

本文介绍在使用 Bootstrap 模态窗编辑记录时,通过 AJAX 从数据库获取已关联的选项 ID,并在前端下拉列表()中精准高亮对应 元素的完整实现方案。

本文介绍在使用 bootstrap 模态窗编辑记录时,通过 ajax 从数据库获取已关联的选项 id,并在前端下拉列表(`

在 Web 表单编辑场景中,常需回显“多对多”关系数据(例如:旅游设施关联的多种配套类型)。典型需求是:打开编辑模态窗后,自动加载该记录在数据库中已勾选的 acomp_type_id 列表,并在

但原始代码存在两个关键问题:

  1. 数据结构误判:AJAX 返回的是对象数组(如 [{"acomp_type_id":"1"}, ...]),而原逻辑直接用 $.inArray(item_id, selected_items) 尝试匹配字符串与对象,必然失败;
  2. DOM 查找逻辑错误:$("#modal_form").find(".acomp_types") 匹配的是整个 上读取属性,不符合 HTML 结构。

✅ 正确做法是:

AVC.AI
AVC.AI

AVC.AI是一款提供图片和视频增强、修复、上色和抠图的在线 AI 工具平台。

下载
  • 在 AJAX 成功回调中遍历 selected_items 数组,提取每个对象的 acomp_type_id 字段;
  • 使用原生 DOM 或 jQuery 精准定位
  • 直接设置其 style.backgroundColor = "yellow" 实现高亮。

以下是优化后的完整 JavaScript 逻辑(兼容 jQuery 且更健壮):

$('#modal_form').on('shown.bs.modal', function () {
    const myID = id; // 确保 id 变量已正确定义
    $.ajax({
        url: "<?php echo base_url('index.php/tourist_facilities/highlight_selected_items');?>/",
        type: "GET",
        dataType: "json",
        data: { id: myID },
        success: function(selected_items) {
            // 安全获取 select 元素(推荐使用 ID 而非 class,避免歧义)
            const $select = $("#acomp_types");
            if ($select.length === 0) return;

            // 遍历返回的每个对象,提取 acomp_type_id
            $.each(selected_items, function(index, item) {
                const acompTypeId = item.acomp_type_id;
                // 查找 value 匹配的 option 并高亮
                const $option = $select.find(`option[value="${acompTypeId}"]`);
                if ($option.length) {
                    $option.css("backgroundColor", "yellow");
                    // 可选:同步选中状态(若需默认选中)
                    $option.prop("selected", true);
                }
            });
        },
        error: function(xhr) {
            console.warn("Failed to load selected items:", xhr.responseText);
        }
    });
});

? 重要注意事项:

  • 后端 PHP 方法 highlight_selected_items() 已正确返回 JSON 数组,无需额外 JSON.parse();
  • 前端务必确保
  • 若下拉项由动态渲染生成,请确保 AJAX 执行前 DOM 已就绪(shown.bs.modal 事件已保证模态窗完全显示);
  • 生产环境建议使用 CSS 类(如 .selected-option { background: #fff9c4; })替代内联样式,便于主题维护;
  • 为防止 XSS,acompTypeId 若含特殊字符(如引号),应使用 encodeURIComponent 或服务端转义,但此处 ID 为数字,可暂不处理。

通过以上实现,即可在编辑时精准还原数据库中的多选状态,并提供清晰的视觉反馈,显著提升用户体验与数据一致性。

相关专题

更多
servlet生命周期
servlet生命周期

Servlet生命周期是指Servlet从创建到销毁的整个过程。本专题为大家提供servlet生命周期的各类文章,大家可以免费体验。

2023.08.08

1171

7

mybatis一级缓存和二级缓存
mybatis一级缓存和二级缓存

在MyBatis中,一级缓存和二级缓存是两种不同级别的缓存机制,它们都可以用来提高性能。本专题提供mybatis一级缓存和二级缓存相关文章,大家可以免费阅读。

2023.08.21

583

4

ibatis和mybatis有什么区别
ibatis和mybatis有什么区别

ibatis和mybatis的区别:1、基本信息不同;2、开发时间不同;3、功能与易用性;4、配置文件;5、入参类型与出参类型;6、返回结果集接受方式;7、语法差异;8、数据库方言支持;9、插件支持;10、社区活跃度;11、全球化支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

2242

5

mybatis如何配置数据库连接
mybatis如何配置数据库连接

mybatis配置数据库连接的方法:1、指定数据源;2、配置事务管理器;3、配置类型处理器和映射器;4、使用环境元素;5、配置别名。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

446

5

mybatis工作原理及流程是什么
mybatis工作原理及流程是什么

mybatis工作原理及流程:1、配置文件;2、接口与映射;3、sql解析与生成;4、执行计划;5、结果处理;6、动态sql;7、缓存机制;8、插件;9、事务管理;10、日志与监控;11、扩展性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

292

4

hibernate和mybatis有哪些区别
hibernate和mybatis有哪些区别

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

302

5

Java MyBatis框架
Java MyBatis框架

本专题专注于Java主流ORM框架MyBatis的应用,系统讲解SQL映射、动态SQL、结果映射、分页查询、缓存机制与多表关联等核心内容,并结合企业管理系统、电商平台和后台管理项目实战,帮助学员全面掌握高效的数据库持久层开发技能。

2025.08.26

5409

22

jsp分页功能如何实现
jsp分页功能如何实现

当数据有几万、几十万甚至上百万时,户必须要拖动页面才能浏览更多的数据,很大程度的影响了户体验。这时可以使用分页来显示数据,能够使数据更加清晰直观,环受数量的限制。php中文网为大家带来了jsp分页功能相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

297

2

jsp怎么打开
jsp怎么打开

打开jsp的步骤是安装Java开发环境、配置Web服务器、创建JSP文件、部署到Web服务器、启动Web服务器、在浏览器中访问JSP页面。本专题为大家提供jsp相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.08

750

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程