问题描述
|
我有多选列表框。我在变更事件中调用函数,并且我从多选列表中传递了值。当我这样做时,我会得到第一个选定值,而不是所有选定值。
<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);
}