多选列表

时间:2011-05-28 07:27:02

标签: php javascript

我有多选列表框。我在on-change事件中调用一个函数,我从多选列表中传递值。当我这样做时,我得到第一个选择的谷值而不是所有多选的值。

<select name="cat" multiple="multiple" class="main" onChange="javascript:get_list(this.value);">
    <option value="">--Select Category--</option>
    <?php
     ////////////////display category//////////////////
     $cat_details=mysql_query("SELECT category_id,category 
                                 FROM category_tb 
                             ORDER BY category");

     while($cat_data=@mysql_fetch_array($cat_details)){?>                        
        <option value="<?=$cat_data['category_id'];?>"<?
        if($_REQUEST['cat']==$cat_data['category_id']){?> selected="selected"<?php } ?>><?=$cat_data['category'];?></option>
    <? } ?>                        
</select>

如何将所有选定值从multi-select传递给ajax?

4 个答案:

答案 0 :(得分:0)

name="cat"更改为name="cat[]"。 然后,所有选定的值将存储在一个数组中。

答案 1 :(得分:0)

您需要将选择字段的名称设置为

cat[]

然后您将收到一个值数组的猫

答案 2 :(得分:0)

尝试这样的事情

this.options[this.selectedIndex].value

只是注意到它是一个多选,需要更复杂的javascript

看这个例子 http://www.mredkj.com/tutorials/tutorial004.html

答案 3 :(得分:0)

您必须遍历所有选项并检查“已选择”属性以获取所有选定的值。

<!-- html -->
<select name="cat" multiple="multiple" class="main" onChange="javascript:get_list(this);">

// Javascript
function get_list(sel) {
    var i = sel.options.length,
        opt = null,
        selValues = [];

    for ( ; i--; ) {
        opt = sel.options[i];
        if (opt.selected) {
            selValues.push(opt.value);
        }
    }

    console.log(selValues);
}