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