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

添加Selectize搜索功能后,带跳转的下拉选框仅显示首个选项的问题

解决Selectize下拉框仅显示单个选项+恢复跳转功能的方案

问题原因

  1. 重复值被自动过滤:你所有<option>的value完全相同,Selectize默认会去重,只保留第一个匹配项。
  2. 原生跳转逻辑失效:Selectize会替换原生下拉框的DOM结构,原来的onChange事件不再生效。
  3. 依赖缺失(常见坑):如果没正确引入Selectize的CSS和JS,也会导致渲染异常。

修复步骤

1. 确保引入必要依赖

先在页面里加载jQuery和Selectize的资源(顺序不能乱):

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.15.2/css/selectize.default.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.15.2/js/selectize.min.js"></script>

2. 修改HTML与初始化代码

给每个选项设置唯一value(避免去重),同时用Selectize的回调实现跳转:

<select id="select-state" placeholder="Pick a state...">
    <option value="">Select a state...</option>
    <option value="https://example.com/shanghai">Shanghai</option>
    <option value="https://example.com/germany">Germany</option>
    <option value="https://example.com/taiwan">Taiwan</option>
    <option value="https://example.com/singapore">Singapore</option>
    <option value="https://example.com/hongkong">Hong Kong</option>
    <option value="https://example.com/mexico">Mexico</option>
    <option value="https://example.com/netherlands">Netherlands</option>
    <option value="https://example.com/uk">UK</option>
    <option value="https://example.com/malaysia">Malaysia</option>
    <option value="https://example.com/usa">USA</option>
    <option value="https://example.com/india">India</option>
    <option value="https://example.com/vietnam">Vietnam</option>
</select>

<script>
jQuery(document).ready(function () {
    $('#select-state').selectize({
        sortField: 'text',
        // 如果必须保留重复value,打开下面注释(不推荐)
        // dedupe: false,
        onChange: function(selectedValue) {
            // 选中有效链接时跳转
            if (selectedValue) {
                window.location.href = selectedValue;
            }
        }
    });
});
</script>

关键提示

  • 优先给每个选项设置唯一value,既符合HTML语义,也能彻底避免去重问题。
  • 必须用Selectize的onChange回调替代原生事件,因为Selectize会生成新的DOM元素,原生事件无法触发。
  • 加载资源时,jQuery一定要在Selectize之前,否则会出现报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 07:48:09