【问题标题】:How to show the optgroup value + option value as the selection如何将 optgroup 值 + 选项值显示为选择
【发布时间】:2013-09-26 19:41:29
【问题描述】:

看看下面的选择:

<select>
<optgroup label="A">
<option value="">1</option>
<option value="">2</option>
<option value="">3</option>
<optgroup label="B">
<option value="">4</option>
<option value="">5</option>
<option value="">6</option>
</select>

When any element is selected I would like to display its label + value in the selection instead of just value.因此,如果选择了 4,我希望选择显示 B - 4

【问题讨论】:

  • 正确关闭您的 optgroup 标签

标签: jquery jquery-select2


【解决方案1】:

如果您需要将所选值恢复为原始值...试试这个... http://jsfiddle.net/kasperfish/sxvW2/2/

$('select').change(function () {
    var opt = $(this).find(':selected');
    var sel = opt.text();
    var og = opt.closest('optgroup').attr('label');
    //alert(sel);
    //alert(og);

    $(this).blur().find(':selected').text(sel + '-' + og);

});

$('select').focus(function () {
    $(this).find('option').each(function(){
        console.log($(this).text());
        t=$(this).text().split('-');
        $(this).text(t[0]);

    });

});

更新 使用 select2 插件,您可以执行以下操作 http://jsfiddle.net/kasperfish/bJxFR/4/

function format(item) {
       opt = $('select').find(':selected');
       sel = opt.text();
       og = opt.closest('optgroup').attr('label');
      return item.text+'-'+og;

}
$("select").select2({
formatSelection: format,
escapeMarkup: function(m) { return m; }
});

【讨论】:

  • 知道如何使用 Select2 jquery 插件来实现吗?
  • 您必须修改插件源代码或在 select2-plugin 回调(如果有)中触发上述代码。
  • 您的演示有一个错误(我不明白为什么),但将opt 更改为opt = $(item.element); 修复了它。
  • 根据@ArturoTorresSánchez 的评论添加选定的值和错误修复:jsfiddle.net/bJxFR/58
【解决方案2】:

更新所选值很麻烦,但请查看此演示

Hacky Demo

$('#select').change(function () {
    var selectedOption = $('#select option:selected');
    var label = selectedOption.closest('optgroup').attr('label');
    var selectText = selectedOption.text();

    var length = $(this).find(':selected').text().length;

    if (length < 2) {
        $(this).find(':selected').text(label + ' - ' + selectText);
    }
});

【讨论】:

  • 如何使用 Select2?
  • 我没听懂你..我已经添加了演示,请看那个
  • 太好了,现在尝试将选择值设置为任何选项中都不存在的值!
  • 如上所述,我正在为 jquery 使用 Select2 插件。它需要使用它的选项来完成,否则它将不起作用。
  • 哎呀我错过了..对不起
【解决方案3】:

试试这个:

jsFiddle here

HTML:

<select>
    <optgroup label="A">
        <option value="">1</option>
        <option value="">2</option>
        <option value="">3</option>
        <optgroup label="B">
            <option value="">4</option>
            <option value="">5</option>
            <option value="">6</option>
</select>

jQuery/javascript:

$('select').change(function () {
    var opt = $(this).find(':selected');
    var sel = opt.text();
    var og = opt.closest('optgroup').attr('label');
    //alert(sel);
    //alert(og);

    $(this).find(':selected').text(sel + '-' + og);

});

【讨论】:

  • 知道如何使用 Select2 jquery 插件来实现吗?
  • 请整理一个 jsfiddle 示例,完全模拟,并包括 Select2 插件(您应该能够通过 jsDelivr CDN site 加载 js - 使用外部资源手风琴选项卡并粘贴URL 减去 http: 前缀。
  • @user1029829 在这里,我为您的问题模拟了an empty jsFiddle shell,并预先加载了 Select2 插件。 (参见外部资源手风琴)。只需添加 HTML/jQuery 代码来演示什么不起作用,然后更新。然后编辑您的原始问题并将修改后的 URL 作为 jsFiddle 链接发布。 [jsFiddle here](http://jsfiddle.net/xxxxxx/)
  • 好的,这里是:jsfiddle.net/bJxFR/3 尝试选择任何值。如果选择 1,下拉菜单会显示 1,如果选择 5,下拉菜单会显示 5。我希望它显示 A - 1 或 B - 5。
  • 两次选择相同选项时不起作用。不过,我没有找到针对该特定问题的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-26
相关资源
最近更新 更多