You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter新增/编辑页实现多选联动下拉菜单方案咨询

多选联动下拉改造方案

该功能可直接实现,只需调整AJAX逻辑与模型查询逻辑即可,具体修改步骤如下:


1. AJAX代码修改

多选下拉的val()方法默认返回选中值的数组,可直接传给后端,只需新增子分类默认提示项、如果使用了selectpicker插件要新增刷新逻辑:

$(document).ready(function() {
    $('#category_id').change(function() {
        var category_id = $(this).val();
        $.ajax({
            url: "<?php echo site_url('admin/get_sub_category');?>",
            method: "POST",
            data: {
                category_id: category_id
            },
            async: true,
            dataType: 'json',
            success: function(data) {
                // 先加默认隐藏的提示选项
                var html = '<option value="" hidden><?php echo get_phrase('select subcategory'); ?></option>';
                var i;
                for (i = 0; i < data.length; i++) {
                    html += '<option value=' + data[i].idsubcategory + '>' + data[i].subcategory_name + '</option>';
                }
                $('#idsubcategory').html(html);
                // 如果子分类也用了selectpicker插件,取消注释下面这行刷新渲染
                // $('#idsubcategory').selectpicker('refresh');
            }
        });
        return false;
    });
});

2. 模型层代码修改

原查询只支持单个分类ID匹配,修改为支持数组查询,兼容单选/多选场景:

function get_sub_category($category_id){
    // 空选择直接返回空结果
    if(empty($category_id)){
        return $this->db->where('category_id', 0)->get('sub_category');
    }
    // 统一转成数组,兼容单ID/多ID数组传入
    $category_id = (array)$category_id;
    // 用where_in匹配多个分类ID的子分类
    $query = $this->db->where_in('category_id', $category_id)->get('sub_category');
    return $query;
}

3. 控制器代码无需修改

原控制器逻辑可直接复用,不需要调整。


可选优化

  • 如果需要保留用户之前选中的子分类,可在替换option后遍历原选中值,匹配到新列表的选项自动设置selected属性
  • 分类未选中任何选项时,可直接禁用子分类下拉,避免无效操作

内容的提问来源于stack exchange,提问作者Dileep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:54:05