Заполнить раскрывающийся список из массива с помощью JQuery

Предполагая, что у меня есть этот массив:

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 , окуклится Красный + Белый + Зеленый и так далее

Ура!

1
задан Derick 16 August 2010 в 08:00
поделиться

2 ответа

Если ваш массив равен 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);
        });
    });
2
ответ дан 2 September 2019 в 22:08
поделиться

Просто очень общий фрагмент кода. Вы должны быть более конкретными (показать 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>
0
ответ дан 2 September 2019 в 22:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: