在<optgroup> </optgroup>中显示带有组标签的所选选项

时间:2015-01-20 05:06:18

标签: jquery html css optgroup

我有以下代码。我想在选择一个选项时使用selected optiongroup label应该显示如何实现它?

<select id='#grp_option'>
 <optgroup label="Group 1">
 <option>Option 1.1</option>
</optgroup> 
<optgroup label="Group 2">
 <option>Option 2.1</option>
 <option>Option 2.2</option>
</optgroup>
<optgroup label="Group 3" disabled>
 <option>Option 3.1</option>
 <option>Option 3.2</option>
 <option>Option 3.3</option>
</optgroup>
</select>

我试过jquery&amp;谷歌搜索,但没有找到解决方案。我试过像脚本一样 onchange

function showLabel(e){ 
 var selected = $('#grp_option :selected');
 var id = #grp_option;
 var cu_label = $(selected).val();
 var label=$(selected).parent().attr('label') + ' - ';
 var tlabel = label + cu_label; 
 //$(id).text(tlabel);
 console.log(tlabel);
}

在console.log中,我得到第2组 - 选项2.1。但我想在select input value中表明这一点。任何人都知道如何实现它?

4 个答案:

答案 0 :(得分:4)

你很亲密!试试这个:

HTML

<label id="target" for="grp_option">Selected: </label>
<br/>
<select id="grp_option">
    <optgroup label="Group 1">
        <option>Option 1.1</option>
    </optgroup>
    <optgroup label="Group 2">
        <option>Option 2.1</option>
        <option>Option 2.2</option>
    </optgroup>
    <optgroup label="Group 3" disabled>
        <option>Option 3.1</option>
        <option>Option 3.2</option>
        <option>Option 3.3</option>
    </optgroup>
</select>

JS

$(document).ready(function () {
    $('#grp_option').on('change', function () {
        showLabel();
    });

    // fire on page load
    $('#grp_option').change();
});

function showLabel() {
    var selected = $('#grp_option :selected');
    var item = selected.text();
    var group = selected.parent().attr('label');
    $('#target').text('Selected: ' + group + ' - ' + item);
}

这是一个工作小提琴:http://jsfiddle.net/ojj0L7ht/

答案 1 :(得分:1)

试试这个,

function showLabel(e){ 
 var selected = $('#grp_option :selected');
 var id = '#grp_option';
 var cu_label = $(selected).val();
 var label=$(selected).parent().attr('label') + ' - ';
 var tlabel = label + cu_label; 
 //$(id).text(tlabel);
 console.log(tlabel);
}

将下拉#grp_option的ID更改为grp_option,如

<select id='grp_option'>

同时将value属性添加到所有options,例如

<option value="3.1">Option 3.1</option>
<option value="3.2">Option 3.2</option>

Demo

答案 2 :(得分:1)

如果仅需要将选定选项的文本放入optgroup中,请尝试以下操作:

var text = $("select[name='selectName'] :selected").text();
console.log(text);

答案 3 :(得分:0)

添加您想要显示的值。如下所示。

<select id='grp_option'>
  <optgroup label="Group 1">
    <option value='Group 1 - Option 1.1'>Option 1.1</option>
  </optgroup> 
  <optgroup label="Group 2">
    <option value='Group 2 - Option 2.1'>Option 2.1</option>
    <option value='Group 2 - Option 2.2'>Option 2.2</option>
  </optgroup>
</select>

然后只需添加此脚本即可。你去吧

$('#grp_option option').each(function () {
     $(this).data('txt', $(this).text());
});

$('#grp_option').change(function () {
 $('option', this).each(function () {
    $(this).text($(this).data('txt'));
 });

 $(this).find('option:selected').text($(this).find('option:selected').attr('value'));
});

完成了。