Предполагая, что у меня есть этот массив:
Array(
[0] => Array(
[Brand] => 'Toyota',
[Model] => 'Camry',
[Color] => 'Red',
[Year] => 2002
)
[1] => Array(
[brand] => 'Nissan',
[Model] => 'Skyline',
[Color] => 'White',
[Year] => 2005
)
[2] => Array(
[Brand] => 'Honda',
[Model] => 'Civic',
[Color] => 'Green',
[Year] => 2000
) )
, а затем в раскрывающемся списке у меня есть «ключи» Марка + Модель + Цвет + Год
Вопрос: как я могу заполнить другой раскрывающийся список с помощью JQuery (AJAX) «значениями», когда я нажимаю на одну клавишу?
Пример: Когда я нажимаю на Модель , Я хочу заполнить еще один раскрывающийся список значениями Camry + Skyline + Civic , и если я нажму Color , окуклится Красный + Белый + Зеленый и так далее
Ура!
Если ваш массив равен cars []
, а ваши поля выбора имеют идентификаторы «sourceBox» и «targetBox» соответственно, следующий код получит текст выбранного элемента. в #sourceBox и заполните #targetBox всеми эквивалентными значениями из вашего массива. Таким образом, выбор «цвета» в #sourceBox заполнит #targetBox значениями «красный», «белый» и «зеленый».
$(document).ready(function(){
$('#sourceBox').change(function(){
var options = "";
for (var i = 0; i < cars.length; i++){
options += '<option>'
+ cars[i][$('#sourceBox option:selected').text()]
+ '</option>';
}
$('#targetBox').html(options);
});
});
Просто очень общий фрагмент кода. Вы должны быть более конкретными (показать HTML, который вы хотите создать из этого массива PHP). В любом случае, вот оно. Это просто создаст массивы JS со значениями из вашего массива PHP. Тогда с ними должно быть легко работать:
<?php
$brands = array();
$models = array();
$colors = array();
$years = array();
foreach ($arr as $k=>$v) {
switch ($k) {
case 'Brand':
$brands[] = $v;
break;
case 'Model':
$models[] = $v;
break;
case 'Color':
$colors[] = $v;
break;
case 'Years':
$years[] = $v;
break;
}
}
?>
<script type="text/javascript">
//<!--
$(document).ready(function() {
var brands = new Array(<?php echo count($brands); ?>);
var models = new Array(<?php echo count($models); ?>);
var colors = new Array(<?php echo count($colors); ?>);
var years = new Array(<?php echo count($years); ?>);
<?php
$i = 0;
foreach ($brands as $v) {
echo 'brands[' . $i. '] = ' . $v . ';'
++$i;
}
$i = 0;
foreach ($models as $v) {
echo 'models[' . $i. '] = ' . $v . ';'
++$i;
}
$i = 0;
foreach ($colors as $v) {
echo 'colors[' . $i. '] = ' . $v . ';'
++$i;
}$i = 0;
foreach ($years as $v) {
echo 'brands[' . $i. '] = ' . $v . ';'
++$i;
}
?>
// now you should have items from your PHP array in JS arrays so you can do something with them
$('a.populate-brands').click(function() {
for (v in brands) {
//
}
})
}); //-->
</script>