在选择框中动态选择多个选项

时间:2010-04-26 17:35:30

标签: javascript jquery

有一个值[1,2,4]数组,表示多选框的值,我如何使用jquery或普通javascript将它们设置为选中?

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

jQuery有一个名为$.inArray(value,array)的实用程序。你可以这样做:

var array = [1,2,4];

$('#example option').each(function() {
    var $th = $(this);
    var value = parseInt($th.val());
    if( $.inArray(value,array) >= 0 ) {
        $th.attr('selected','selected');
    }
});

$.inArray()返回值的索引(如果找到),如果不在数组中,则返回-1。这就是为什么你需要测试>= 0

在此查看示例 -

http://jsfiddle.net/PJs37/

答案 1 :(得分:3)

在纯JavaScript中:

function in_array(needle, haystack, argStrict)
{
    var key = '', strict = !!argStrict;
    if (strict)
    {
        for (key in haystack)
        {
            if (haystack[key] === needle)
                return true;
        }
    }
    else
    {
        for (key in haystack)
        {
            if (haystack[key] == needle)
                return true;
        }
    }
    return false;
}

var values = new Array(1, 2, 4);
var select = document.getElementById('selectName'); //Change to the id of the select
if (select)
{
    for (var i = 0; i < select.options.length; i++) 
    {
        //Select options matching array values, unselect others
        select.options[i].selected = in_array(select.options[i].value, values, false);
    }
}

UPDATE:添加了模仿PHP的JavaScript函数in_array ......

答案 2 :(得分:0)

我对Javascript不太熟悉,但我认为就是这样:

var values = [1, 2, 4];
var sel = document.getElementsByTagName('SELECT')[0];
for (var i = 0; i < sel.options.length; i++) {
    if(sel.options[i].value == 1 || sel.options[i].value == 2 || sel.options[i].value == 4)
        sel.options[i].selected = 'selected';
}