如何从组合框中获取所选项目

时间:2013-08-29 07:15:29

标签: javascript jquery html

我有多个动态(组合框)下拉列表,我想在点击每个列表的单个变量上获取不同列表中所有选定项的值

function createList(arrunique,arrayout){
        for (i=0 ; i < arrayout[0].length ; i++){
        var divId = i;          
        $('#tb').append('<select class="list" onclick="getChecked()" name="combo" id="'+divId+'"></select>');
        var select = document.getElementById(divId);
        select.options[select.options.length] = new Option("Select "+ arrunique[i][0]);
        for (j=1 ; j < arrunique[i].length ; j++){
            select.options[select.options.length] = new Option(arrunique[i][j]);
          }
         }
        }

        function getChecked(){              
            var elm = document.getElementByName("combo");
            alert(elm.options[elm.selectedIndex].value);
        }

请建议我如何获得这些所选项目的价值 我怎样才能获得这些选定项目的值 请建议我如何获得这些选定项目的价值 我如何获得这些选定项目的值

3 个答案:

答案 0 :(得分:2)

你使用jQuery吗?试试这个:

function getChecked(){
    alert($('select[name="combo"]').find(":selected").text());
}

<强>更新

如果你想用动态标签获取值,只需输入一个参数。

function getChecked(element){
    alert($('select[name="' + element + '"]').find(":selected").text());
}

致电:

getChecked('combo')

getChecked('combo_2')

getChecked('combo_3') ...

答案 1 :(得分:0)

这是一个jsfiddle做你需要的http://jsfiddle.net/krasimir/bWfEd/5/ 它根据预定义的数组和对象创建下拉列表。它为每个变化事件附加一个事件。稍后您可以浏览每个select元素并获取其值:

JS

var wrapper = document.getElementById("wrapper");
var selects = [];

var buildDropdowns = function(dropdowns) {
    for(var i=0; dropdown=dropdowns[i]; i++) {
        var select = document.createElement("SELECT");
        for(var j=0; option=dropdown[j]; j++) {
            var o = new Option(option.label, option.value);
            select.options[select.options.length] = o;
        }
        wrapper.appendChild(select);
        select.addEventListener("change", getValues);
        selects.push(select);
    }
}
var getValues = function() {
    var values = [];
    for(var i=0; select=selects[i]; i++) {
        values.push(select.value);
    }
    alert(values);
}

buildDropdowns([
    [
        { value: 1, label: "Option1"},
        { value: 2, label: "Option2"},
        { value: 3, label: "Option3"},
        { value: 4, label: "Option4"}
    ],
    [
        { value: 1, label: "Option1"},
        { value: 2, label: "Option2"},
        { value: 3, label: "Option3"},
        { value: 4, label: "Option4"}
    ],
    [
        { value: 1, label: "Option1"},
        { value: 2, label: "Option2"},
        { value: 3, label: "Option3"},
        { value: 4, label: "Option4"}
    ]
]);

HTML

<div id="wrapper"></div>

请注意 getValues 实际上可以访问每个投影,因此您可以使用所选值执行任何操作。

答案 2 :(得分:0)

我认为在阿尔迪的答案非常接近,但并不完全。

你必须得到:选择选项元素,而不是选择。这意味着选择器应该是:$('select[name="' + element + '"] option:selected').text()

使用最新的遗留jQuery的工作示例:

HTML:

<select name="testSelect">
    <option value="1">Test1</option>
    <option value="2">Test2</option>
    <option value="3">Test3</option>
    <option value="4">Test4</option>
    <option value="5">Test5</option>
</select>

<div class="log"></div>

使用Javascript:

function getChecked(element){
    $('.log').append('<br/>Selected element: ' + $('select[name="' + element + '"] option:selected').text());
}

$('select').on('change', function() {
    getChecked($(this).prop('name'));
});

现场演示: http://jsfiddle.net/daJzE/2/