仅在 bootstrap formhelpers 国家选择器中显示国家子集文本

Only show country subset text in bootstrap formhelpers country picker

我正在使用 Bootstrap FormHelpers country picker 并且我有以下初始化代码:

<div class="bfh-selectbox bfh-languages pull-right" data-language="es_ES" data-available="gl_ES,ca_ES,eu_ES,es_ES" data-flags="false" data-blank="false"></div>

此代码生成此输出:

<div class="bfh-selectbox bfh-languages pull-right" data-language="es_es" data-available="gl_ES,ca_ES,eu_ES,es_ES" data-flags="false" data-blank="false">
<input type="hidden" name="" value="es_es">
<a class="bfh-selectbox-toggle form-control" role="button" data-toggle="bfh-selectbox" href="#">
<span class="bfh-selectbox-option">Galego (Spain)</span>
<span class="caret selectbox-caret"></span></a>

<div class="bfh-selectbox-options">
    <div role="listbox">
        <ul role="option">
            <li>
                <a tabindex="-1" href="#" data-option="gl_ES">Galego (Spain)</a>
            </li>
            <li><a tabindex="-1" href="#" data-option="ca_ES">Català (Spain)</a></li>
            <li><a tabindex="-1" href="#" data-option="eu_ES">Euskara (Spain)</a></li>
            <li><a tabindex="-1" href="#" data-option="es_ES">Español (Spain)</a></li>
        </ul>
    </div>
</div>

没关系,但我只会得到像 "Galego"、"Catalá"、"Euskara" 和 "Español" 这样的子集名称,但要避免附加“(西班牙)”(国名)。所以 bootstrap select 只会显示子集区域设置国家/地区名称。

这个实现起来容易吗?我认为唯一可行且非常难看的是访问 DOM 并在加载页面后在每个 li role="option" 中删除“(西班牙)”文本,但我是寻找一些优雅的方式可能初始化 bootstrap 选项。

如果你声明它很简单:data-language="es"而不是es_ES

<div class="bfh-selectbox bfh-languages pull-right" data-language="es" data-available="gl_ES,ca_ES,eu_ES,es_ES" data-flags="false" data-blank="false"></div>

这是 Language Picker

的文档

这是我使用 javascript 发现的唯一棘手的方法,因为我认为 bootstrap 组件不允许本机实现此功能。如果将来对更多人有帮助,请在这里写下解决方案:

<script>
        $( document ).ready(function() 
        {
            $('.bfh-selectbox-options li a').each(function(key, value) {
                //console.log($(this).text().replace(' (Spain)',''))
                $(this).text($(this).text().replace(' (Spain)',''))
            });

            $('.bfh-selectbox-option').text($('.bfh-selectbox-option').text().replace(' (Spain)',''))
        });
</script>