多选列表

问题描述

| 我有多选列表框。我在变更事件中调用函数,并且我从多选列表中传递了值。当我这样做时,我会得到第一个选定值,而不是所有选定值。
<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>
如何将所有选择的值从多重选择传递给Ajax?     

解决方法

        将
name=\"cat\"
更改为
name=\"cat[]\"
。 然后,所有选择的值将存储在数组中。     ,        您需要将选择字段的名称设置为
cat[]
然后您将收到一个猫值数组     ,        尝试这样的事情
this.options[this.selectedIndex].value
只是注意到这是一个多项选择,因此需要更复杂的javascript 看这个例子 http://www.mredkj.com/tutorials/tutorial004.html     ,        您将必须遍历所有选项,并检查“选定的”属性以获取所有选定的值。
<!-- 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);
}