1

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

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);
        }

请建议我如何获取这些选定项目的值 我如何获取这些选定项目的值 请建议我如何获取这些选定项目的值 我如何获取这些选定项目的值

4

3 回答 3

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')...

于 2013-08-29T07:18:02.577 回答
0

这是一个 jsfiddle 做你需要的http://jsfiddle.net/krasimir/bWfEd/5/ 它基于预定义的数组和对象创建下拉菜单。它为每个更改事件附加一个事件。稍后您可以遍历每个选择元素并获取其值:

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实际上可以访问每个下拉菜单,因此您可以对所选值执行任何您需要的操作。

于 2013-08-29T07:28:55.813 回答
0

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

你必须得到 :selected 的选项元素,而不是选择。这意味着选择器应该是:$('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/

于 2013-08-29T07:50:02.067 回答