下拉框增强示例

标准下拉框

<select data-placeholder="Choose a Country..." class="form-control chosen-select" style="width:350px;" tabindex="1">
    <option value=""></option>
    <option value="United States">United States</option>
    <option value="United Kingdom">United Kingdom</option>
    <option value="Afghanistan">Afghanistan</option>
    <option value="Aland Islands">Aland Islands</option>
    <option value="Albania">Albania</option>
    <option value="Algeria">Algeria</option>
    <option value="American Samoa">American Samoa</option>
    ... ...
</select>

<script type="text/javascript">
$('.chosen-select').chosen();
</script>

多选下拉框

<select data-placeholder="Choose a Country..." class="form-control chosen-select" multiple style="width:350px;" tabindex="4">
    <option value=""></option>
    <option value="United States">United States</option>
    <option value="United Kingdom">United Kingdom</option>
    <option value="Afghanistan">Afghanistan</option>
    <option value="Aland Islands">Aland Islands</option>
    <option value="Albania">Albania</option>
    <option value="Algeria">Algeria</option>
    <option value="American Samoa">American Samoa</option>
    <option value="Andorra">Andorra</option>
    <option value="Angola">Angola</option>
    <option value="Anguilla">Anguilla</option>
    <option value="Antarctica">Antarctica</option>
    <option value="Antigua and Barbuda">Antigua and Barbuda</option>
    <option value="Argentina">Argentina</option>
    <option value="Armenia">Armenia</option>
    <option value="Aruba">Aruba</option>
    <option value="Australia">Australia</option>
    <option value="Austria">Austria</option>
    <option value="Azerbaijan">Azerbaijan</option>
    ... ...
</select>

<script type="text/javascript">
$('.chosen-select').chosen();
</script>

支持 <optgroup>

<select data-placeholder="Your Favorite Football Team" style="width:350px;" class="form-control chosen-select" tabindex="5">
    <option value=""></option>
    <optgroup label="NFC EAST">
        <option>Dallas Cowboys</option>
        <option>New York Giants</option>
        <option>Philadelphia Eagles</option>
        <option>Washington Redskins</option>
    </optgroup>
    <optgroup label="NFC NORTH">
        <option>Chicago Bears</option>
        <option>Detroit Lions</option>
        <option>Green Bay Packers</option>
        <option>Minnesota Vikings</option>
    </optgroup>
    <optgroup label="NFC SOUTH">
        <option>Atlanta Falcons</option>
        <option>Carolina Panthers</option>
        <option>New Orleans Saints</option>
        <option>Tampa Bay Buccaneers</option>
    </optgroup>
    <optgroup label="NFC WEST">
        <option>Arizona Cardinals</option>
        <option>St. Louis Rams</option>
        <option>San Francisco 49ers</option>
        <option>Seattle Seahawks</option>
    </optgroup>
    <optgroup label="AFC EAST">
        <option>Buffalo Bills</option>
        <option>Miami Dolphins</option>
        <option>New England Patriots</option>
        <option>New York Jets</option>
    </optgroup>
    <optgroup label="AFC NORTH">
        <option>Baltimore Ravens</option>
        <option>Cincinnati Bengals</option>
        <option>Cleveland Browns</option>
        <option>Pittsburgh Steelers</option>
    </optgroup>
    <optgroup label="AFC SOUTH">
        <option>Houston Texans</option>
        <option>Indianapolis Colts</option>
        <option>Jacksonville Jaguars</option>
        <option>Tennessee Titans</option>
    </optgroup>
    <optgroup label="AFC WEST">
        <option>Denver Broncos</option>
        <option>Kansas City Chiefs</option>
        <option>Oakland Raiders</option>
        <option>San Diego Chargers</option>
    </optgroup>
</select>

<!-- 多选框添加属性 multiple 即可 -->
<select data-placeholder="Your Favorite Football Team" style="width:350px;" class="form-control chosen-select" multiple tabindex="6">
    ... ...
</select>

<script type="text/javascript">
$('.chosen-select').chosen();
</script>

支持已选和禁用

自动高亮显示选中项并自动禁选禁用的项。

<!-- 单选下拉框 -->
<select data-placeholder="Your Favorite Type of Bear" style="width:350px;" class="form-control chosen-select" tabindex="7">
    <option value=""></option>
    <option>American Black Bear</option>
    <option>Asiatic Black Bear</option>
    <option>Brown Bear</option>
    <option>Giant Panda</option>
    <option selected>Sloth Bear</option>
    <option disabled>Sun Bear</option>
    <option>Polar Bear</option>
    <option disabled>Spectacled Bear</option>
</select>
<!-- 多选下拉框 -->
<select data-placeholder="Your Favorite Types of Bear" style="width:350px;" multiple class="form-control chosen-select" tabindex="8">
    <option value=""></option>
    <option>American Black Bear</option>
    <option>Asiatic Black Bear</option>
    <option>Brown Bear</option>
    <option>Giant Panda</option>
    <option selected>Sloth Bear</option>
    <option disabled>Sun Bear</option>
    <option selected>Polar Bear</option>
    <option disabled>Spectacled Bear</option>
</select>

<script type="text/javascript">
$('.chosen-select').chosen();
</script>

自动隐藏单选下拉框的搜索框

配置项 disable_search_threshold 用以设置自动隐藏搜索框的选项数的阈值。即当选项数比设定值小时,将自动隐藏搜索框。

<select data-placeholder="Your Favorite Type of Bear" style="width:350px;" class="form-control chosen-select-no-single" tabindex="9">
    <option value=""></option>
    <option>American Black Bear</option>
    <option>Asiatic Black Bear</option>
    <option>Brown Bear</option>
    <option>Giant Panda</option>
    <option selected disabled>Sloth Bear</option>
    <option disabled>Sun Bear</option>
    <option selected disabled>Paddington Bear</option>
    <option selected>Polar Bear</option>
    <option disabled>Spectacled Bear</option>
</select>

<script type="text/javascript">
$(".chosen-select").chosen({disable_search_threshold: 10});
</script>

支持自定义为空时的默认显示文本

当显示空内容时插件会自动以元素属性 data-placeholder 的值代替。如果没有设置 data-placeholder 属性,单选下拉框会默认显示 "Select an Option",多选下拉框会默认显示 "Select Some Options"

注: 单选下拉框下如果没有指定选中某项,浏览器会默认选中第一项,如果想要让默认文本内容生效,需要在下拉列表开始添加一个空白项。

<select data-placeholder="Choose a country..." style="width:350px;" multiple class="chosen-select">
    <option value=""></option>
</select>

<script type="text/javascript">
$(".chosen-select").chosen();
</script>

支持自定义未查找到结果时的提示文本

通过配置项 no_results_text 可以很方便地设置搜索结果为空时的提示文本。

$(".chosen-select").chosen({no_results_text: "Oops, nothing found!"});

多选下拉框的选择数限制

通过配置项 max_selected_options 可以很方便地限制多选下拉框允许选择的最大数目:

$(".chosen-select").chosen({max_selected_options: 5});

如果已经达到了最大限制数还去尝试选择其他项,则会触发事件 chosen:maxselected

$(".chosen-select").on("chosen:maxselected", function () { ... });

允许单选下拉框的反选

如果某个单选下拉框的值不是必须字段,可以设置 allow_single_deselect: true,插件会添加一个用以清空选择内容按钮元素,该功能需要第一项为空选项方生效。

$(".chosen-select").chosen({allow_single_deselect: true});

支持从右向左显示

插件支持从右向左显示下拉框,只需要为下拉框元素添加样式类 .chosen-rtl 即可。

<select class="chosen-select chosen-rtl">
</select>
  
<script type="text/javascript">
$(".chosen-select").chosen();
</script>

改变/更新 事件

表单域改变

当表单中下拉框选中或取消选中时,我们经常会项进行一些相关的业务处理。使用插件选择任何一项后,都会在原下拉框上触发 change 事件,可以通过监听该事件做一些操作:

$("#form_field").chosen().change({
    // do something
});

动态更新 Chosen 插件内容

如果想要动态更新下拉框的选择列表并及时应用到插件中,需要自行触发事件 "chosen:updated",Chosen 插件将自动根据下拉列表更新内容重建控件内容。

$("#form_field").trigger("chosen:updated");

支持自定义宽度

通过配置项 width 可以很方便地自定义下拉框控件的宽度。

$(".chosen-select").chosen({width: "95%"});

支持动态添加未匹配的搜索结果 组件库额外添加功能

通过设置配置项 allow_add_nomatch_result: true,支持在未搜索到查找内容时,插件在提示文本后面自动添加“添加”按钮,点击后会动态将搜索内容作为新的列表项添加到下拉列表末尾,新加项的显示文本和对应值均为搜索内容文本

<select data-placeholder="Your Favorite Types of Bear" class="form-control chosen-select-no-match" style="width:350px;" tabindex="17" id="single-label-example">
    <option value=""></option>
    <option selected>American Black Bear</option>
    <option>Asiatic Black Bear</option>
    <option>Brown Bear</option>
    <option>Giant Panda</option>
    <option>Sloth Bear</option>
    <option>Sun Bear</option>
    <option>Polar Bear</option>
    <option>Spectacled Bear</option>
</select>

<script type="text/javascript">
$('.chosen-select-no-match').chosen({allow_add_nomatch_result: true});
</script>