我需要在下拉列表的每个选项中嵌入2个值,然后才能将它们都传递给JavaScript函数。

<select onChange="display(<?=$manufacturers_id?>,<?=$modelID?>,this.value1,this.value2);">
..
..
echo "<option value1=\"".$variantID."\" value2=\"".$month_year."\">".$products_variant." ".$month_year."</option>";
..
..

</select>


如您所见,此HTML代码是由PHP生成的,我需要将这两个值从数据库中提取出来并传递给JS函数。

我愿意就更好的方法提出建议吗?

最佳答案

您不能在一个选项中添加许多值。
相反,您可以使用datasets(html5),例如:

<select id="myselect">
 <option data-this="foo" data-that="bar">
</select>


读取这些值的javascript是:

var d = document.getElementById("myselect");
var _this = d.options[d.selectedIndex].dataset["this"];
var _that = d.options[d.selectedIndex].dataset["that"];


如果您不想弄乱数据集,则可以存储一个JSON对象:

...
<option value='<?php echo json_encode(array("foo"=>1,"bar"=>2)); ?>'>
...


并提取数据,例如:

var d = document.getElementById("myselect");
var option_value = JSON.parse( d.options[d.selectedIndex].value );


你选

编辑:

改变这个:

<select onChange="display(<?=$manufacturers_id?>,<?=$modelID?>,this);">

function display(manufacturers_id,modelid,obj) {
   ... json way
   var option_value = JSON.parse(obj.options[obj.selectedIndex].value);
   // option_value.foo = 1;

   ... dataset way
   var _this = obj.options[obj.selectedIndex].dataset["this"];
   // _this will have the "foo" value
}

关于php - 在<select>的选项中嵌入多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10919418/

10-12 12:50
查看更多