Передача переменной на лету - PullRequest
1 голос
/ 24 июня 2011

То, чего я пытаюсь добиться, - это заполнить второй выпадающий список после выбора в первом выпадающем списке.

Я не слишком знаком с AJAX (который, я думаю, мне нужно будет использовать для достижения этой цели).

Пока у меня есть следующий код PHP.

<select name="category">
    <?php 
    $q = $admindb->getParentCategories();
    while($row=mysql_fetch_assoc($q)){
        $title=$row['title'];
        $catid=$row['id'];
        ?>
        <option value="<?php echo $catid; ?>"<?php if($catid == $form->value("category")){ echo 'selected="selected"'; }?>><?php echo $title; ?></option>
        <?php
    }   
    ?>
</select>
<select name="subcategory">
    <?php 
    $q = $admindb->getSubCategories($catid);
    while($row=mysql_fetch_assoc($q)){
        $title=$row['title'];
        $catid=$row['id'];
        ?>
        <option value="<?php echo $catid; ?>"<?php if($catid == $form->value("subcategory")){ echo 'selected="selected"'; }?>><?php echo $title; ?></option>
        <?php
    }   
    ?>
</select>

Как видите, у меня есть два выпадающих списка.

Проблема в том, что для работы второго поля необходим выбор первого из них. Поэтому мне нужно реализовать способ передачи выделения из первого блока во второй блок на лету.

Может ли кто-нибудь предложить какие-либо советы о том, как это сделать?

Спасибо

Ответы [ 4 ]

1 голос
/ 24 июня 2011

В зависимости от того, откуда поступают данные, вам может потребоваться или не потребоваться специальный вызов ajax. НО вам нужно поймать событие и затем заполнить 2-й выпадающий список соответственно. Самый простой способ сделать это - использовать события jQuery:

http://api.jquery.com/category/events/

Для этого также есть ТОННЫ учебных пособий. Просто погуглите.

1 голос
/ 24 июня 2011

Вам нужно будет изолировать код для создания первого и второго выпадающего списка в двух отдельных файлах PHP. Когда кто-то выбирает категорию в первом поле выбора, отправьте Ajax-запрос к файлу, который генерирует второе окно списка. Включите в запрос выбор в первом поле выбора. Я бы порекомендовал использовать jQuery для выполнения фактического запроса Ajax.

0 голосов
/ 24 июня 2011

Вот способ сделать это

  • создать первый выпадающий список в php и сделать второй пустой отключенным
  • к первому выпадающему меню привязать метод JS, который запускается onchange
  • в PHP создайте точку входа, которая возвращает вам данные для вашего второго раскрывающегося списка, AJAX будет использовать эту точку входа для извлечения данных
  • В методе JS, который вы привязали к своему первому раскрывающемуся списку,используйте AJAX для извлечения данных для вашего второго выпадающего списка

Теперь вы можете использовать jQuery, prototype, yui любой набор инструментов JS, который вам подходит.Если бы я был новичком, я бы отправлял наценку с сервера в ответ на мой вызов AJAX и заменил бы эту разметку в выпадающем списке

0 голосов
/ 24 июня 2011

Итак, у вас будет HTML, и вы будете использовать jQuery (потому что он более сбалансированный).

В вашем HTML у вас будет <form...> с двумя раскрывающимися полями формы.

Я собираюсь использовать короткий псевдоиш-код для объяснения.

$('#first_dropdown').change(function(         
    // When someone makes a change to the drop down or "selects" something (maybe bind click() too)
    // Your code here to select the value selected and do a ...
    $.post() // post to some PHP script that will return the values that will fill the 2nd  
    // dropdown but it'll be stored in some javascript variable
    // and you're going to add jQuery code to take that js variable to populate the 2nd dropdown
){});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...