вложение нескольких значений в опции <select>

Мне нужно вставлять 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.

Я открыт для предложений по лучшему способу сделать это?

вы не можете добавить много значений в параметр. вместо этого вы можете использовать наборы данных (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 } 

Я бы сделал следующие варианты:

 <option data-value1="X" data-value2="Y"> 

Затем обработайте эти атрибуты данных, но вы хотите (с помощью метода jQuery data("value1") с собственным getAttribute("data-value1") и т. Д.