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

Flask传递列表实现带搜索的多选Dropdown及选择数限制方案咨询

实现方案

1. 前置依赖引入

在HTML的<head>标签里插入以下内容,引入成熟的下拉框组件资源,无需自己手写搜索、多选逻辑:

<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>

2. 插入下拉框代码

按照你的要求,在原有input行之后插入对应组件代码,修改后的完整片段如下:

<div class="card" id="div_SetConfig">
        <form>
                <h2><svg class="icon" aria-hidden="true"></svg>KPI Name</h2>
                <label class="input">
                    <input class="input__field" type="Dropdown" id="KPI Name"/>      
                    <span class="input__label">Please choose your exact KPI</span>
                    <!-- 新增多选下拉框开始 -->
                    <select id="kpi-select" multiple="multiple" style="width: 100%;margin-top: 12px;">
                        {% for kpi in kpis %}
                        <option value="{{ kpi }}">{{ kpi }}</option>
                        {% endfor %}
                    </select>
                    <!-- 新增多选下拉框结束 -->
                </label>

这里用Flask自带的Jinja2模板循环语法,直接遍历你后端传过来的kpis列表自动生成所有选项,不用手动写8000条option。

3. 初始化组件配置

在HTML文件末尾</body>标签之前插入以下JS代码,配置你需要的多选、搜索、最多选30个的规则:

<script>
$(document).ready(function() {
    $('#kpi-select').select2({
        placeholder: "请输入关键词搜索并选择KPI",
        allowClear: true,
        maximumSelectionLength: 30,
        width: '100%'
    });
});
</script>

性能优化提示

如果8000条数据一次性加载出现卡顿,可以改为后端搜索模式:

  • 后端新增一个接口,接收前端传的搜索关键词,返回模糊匹配的KPI列表
  • 改写select2的初始化配置,通过ajax参数调用后端接口,只渲染匹配的结果,大幅提升加载速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:15:03