使用javascript从多个下拉菜单中获取选项的选项值

时间:2015-02-25 20:41:41

标签: javascript html drop-down-menu selectedindex

我有多个功能,有多个选项需要在选择选项时更新。我还需要通过属性元素传递第三个数据。

.getElementById()适用于单个下拉菜单,但如果页面上有多个菜单,如何让它工作?

我尝试了var e = document.getElementsByClassName("testClass");但没有效果。

我还尝试创建optionsText& optionsValue与使用optionsFtr创建var optionsValue = $('option:selected', this).value;的方式相同,但也不起作用。

http://jsfiddle.net/8awqLek4/4/

HTML代码

<ul>
    <li>
        <div class="ftrsTitle">BODY</div>
        <select class="testClass" id="testId">
            <option>Select</option>
            <option ftr="bod" value="blk">Black</option>
            <option ftr="bod" value="grn">Kelly Green</option>
            <option ftr="bod" value="red">Red</option>
            <option ftr="bod" value="roy">Royal</option>
        </select>
    </li>
    <li>
        <div class="ftrsTitle">TRIM</div>
        <select class="testClass">
            <option>Select</option>
            <option ftr="trm" value="blk">Black</option>
            <option ftr="trm" value="grn">Kelly Green</option>
            <option ftr="trm" value="red">Red</option>
            <option ftr="trm" value="roy">Royal</option>
        </select>
    </li>
</ul>
<div id="vars"></div>

Javascript代码

$(document).ready(function () {
    $("select").on('change', function () {
        var e = document.getElementById("testId");
        var optionsText = e.options[e.selectedIndex].text;
        var optionsValue = e.options[e.selectedIndex].value;
        var optionsFtr = $('option:selected', this).attr('ftr');
        $("#vars").html("<p>optionsText: " + optionsText + "</p><p>optionsValue: " + optionsValue + "</p><p>optionsFtr: " + optionsFtr + "</p>");
    });
});

2 个答案:

答案 0 :(得分:1)

要阅读选择值,您只需使用$(this).val()即可。要获得选定的选项标签,您应该使用text()方法。

固定代码如下所示:

$("select").on('change', function () {
    var optionsText = $('option:selected', this).text();
    var optionsValue = $(this).val();
    var optionsFtr = $('option:selected', this).attr('ftr');
    $("#vars").html("<p>optionsText: " + optionsText + "</p><p>optionsValue: " + optionsValue + "</p><p>optionsFtr: " + optionsFtr + "</p>");
});

演示: http://jsfiddle.net/8awqLek4/3/

答案 1 :(得分:0)

这应该这样做:

$(document).ready(function(){
    $("select").on('change', function(){
                var e = $(this).find("option:selected");
                $("#vars").html("<p>optionsText: " + e.text() + "</p><p>optionsValue: " + $(this).val() + "</p><p>optionsFtr: " + e.attr("ftr") + "</p>");
        });
});

使用this关键字。您可以访问选择的目标,并与find :selected选择器结合使用,您可以找到当前选中的选项元素。

http://jsfiddle.net/8awqLek4/5/