Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Вывод списка или поля от значения списка


Автор: CTAzz 20.12.2007, 11:13
В общем список

Код

print "<select name='marka'><option value='' selected='selected'>Выбрать из списка</option><option value='drugoe'>Другое</option>";
$spisok_marks = mysql_query( "select * from marks");
while ($spisok_marks_p = mysql_fetch_array($spisok_marks))
{
print "<option value='$spisok_marks_p[id]'>$spisok_marks_p[name]</option>";
}


Если мы выбираем "Другое", тогда у нас должно появится новое поле чуть ниже этого списка, если же мы выбираем другое значение, который выйдут из цикла while, пусть это будут значения А, то мы выводим второй список!
Как можно осуществить такую штуку?

Автор: bars80080 20.12.2007, 11:50
заготовить пустое поле и скрыть его display: none;
при выборе поля "другое" display: block;
или visibility: (visible/hidden)

при выборе пнкта "а" или "б" также поднять скрытый селект, и сформировать в него список нужных option-нов
, а это уже тема http://forum.vingrad.ru/forum/topic-64842/show_topics_from_subforums-1/15.html#st_0_view_0

Автор: CTAzz 20.12.2007, 17:51
С яваскриптом я особо не сталкивался, так что многого я в нем не понимаю.
Селект у меня имеется и выводится

Код

<script type="text/javascript">
var regiondb = new Object()
<?
          $res1 = mysql_query( "SELECT * FROM marks order by name" );
          while ( $row = mysql_fetch_array($res1) )
          {
              echo "regiondb[\"". $row["id"] ."\"] = [";

                    $res3 = mysql_query("SELECT * FROM models_".$row['tablemodel']."  order by model");
                    $num_results = mysql_num_rows($res3);
                    for ( $i=0; $i < $num_results; $i++ )
                    {
                        $kow = mysql_fetch_array($res3);
                        echo "{value:\"". $kow["id"] ."\", text:\"". $kow["model"] ."\"}";
                        if ( $i != ( $num_results - 1) ) echo ",";
                    }

              echo "];\n";
          }

       ?>


function setModels(chooser) {
    var modelChooser = chooser.form.elements["model"];
    // обнуляем список
    modelChooser.options.length = 0;
    // получаем value для массива regiondb
    var choice = chooser.options[chooser.selectedIndex].value;
    var db = regiondb[choice];
    // вставляем первый элемент
    modelChooser.options[0] = new Option("Выбрать из списка ", "", true, false);
    if (choice != "") {
        for (var i = 0; i < db.length; i++) {
            modelChooser.options[i + 1] = new Option(db[i].text, db[i].value);
        }
    }
}
</script>


Этот селект должен быть скрытым
Код

<select name='model'><option value='' selected='selected'>Выбрать из списка</option></select>

Исходный селект, который решит вопрос что вывести поле или селект приведен в первом посту( после имени селекта вставлено onchange='setModels(this)'). По отдельности выводить всё получается, но вот вместе нет! Потому что если выводить селект я пишу ончанж=сетмоделс, а выводя поле совсем другое. Как их объеденить Может с условием получится?



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)