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

如何在Bootstrap前端展示Flask传递的医院列表可选下拉菜单

你当前代码的核心问题是混用了 Bootstrap 的 dropdown 悬浮菜单组件和原生 select 表单选择组件,多余的外层 dropdown 结构导致出现了两层下拉的样式异常。以下是两种可直接使用的修复方案:

方案1:使用原生表单选择框(最常用,适合表单提交场景)

直接保留form-select,删除外层多余的dropdown相关结构即可,修复后代码如下:

<!-- 医院选择下拉菜单 -->
<div class="mb-3">
    <select class="form-select form-select-lg" name="hospital">
        {% if hospitals %}
        <option value="{{hospitals[0]}}" selected>{{hospitals[0]}}</option>
        {% for hospital in hospitals[1:] %}
        <option value="{{hospital}}">{{hospital}}</option>
        {% endfor %}
        {% else %}
        <option value="" disabled selected>暂无可用医院</option>
        {% endif %}
    </select>
</div>

说明:

  • method和action属性要写在包裹该选择框的<form>标签上,不要写在<select>标签中
  • 新增了空列表判断逻辑,避免后端返回空列表时模板渲染报错

方案2:使用按钮触发式悬浮下拉菜单(适合无表单的跳转/筛选场景)

如果需要点击按钮弹出菜单的交互样式,就不需要用<select>标签,直接按Bootstrap dropdown规范编写结构即可:

<!-- 按钮触发式医院选择下拉菜单 -->
<div class="dropdown mb-3">
    <button class="btn btn-secondary dropdown-toggle" type="button" id="hospitalDropdown" data-bs-toggle="dropdown" aria-expanded="false">
        选择医院
    </button>
    <ul class="dropdown-menu" aria-labelledby="hospitalDropdown">
        {% for hospital in hospitals %}
        <li><button class="dropdown-item" type="button" data-value="{{hospital}}">{{hospital}}</button></li>
        {% endfor %}
    </ul>
</div>

说明:

  • 如果你使用的是Bootstrap 5版本,需要把所有交互属性的前缀从data-改为data-bs-,否则下拉交互不会生效
  • 可以补充简单的JS逻辑实现选中值回显:点击dropdown-item时,把按钮文本替换为选中的医院名称,同时把选中值存入隐藏域或者直接发起请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 17:45:04