LikeMySoul
@LikeMySoul
Сис. Админ

Как сделать появление второго select при выборе значения в первом html\php?

Доброго времени суток. Есть простенькая страница на html с небольшим php скриптом создающим API ссылку для пользователей. Устроено все простенько, однако не пойму как реализовать появление второго, заранее подготовленного select .
На случай если непонятно выразился - необходимый результат:
Есть два INPUT start\end и select Город. Как только пользователь выбирает город - под ним появляется новый select с выбором сервера.

Сразу объяснюсь - я ни разу не разработчик и с html и php знаком крайне посредственно :)
  • Вопрос задан
  • 116 просмотров
Решения вопроса 2
Adamos
@Adamos
А РНР здесь и ни при чем. Для этого нужен javascript.
Такая логика называется chained select. Для нее должен работать AJAX-запрос к серверу: в запросе город, в ответе - список серверов. Либо, если список не слишком велик, эти данные можно сразу включить в страницу и просто выбирать нужные по событию изменения первого select.
Ответ написан
Okujava-script
@Okujava-script
Веб-программист с абсолютным слухом и композитор
Есть пример для трёх взаимосвязанных селектов:
Страна: <select id="country_id" class="StyleSelectBox">
    <option value="0">- выберите страну -</option>
    <option value="1">Россия</option>
    <option value="2">Украина</option>
    <option value="3">Белорусь</option>
</select>
<br /><br />Регион:
<select id="region_id" disabled>
    <option value="0">- Выберите регион -</option>
</select></td><td>
<br /><br />Город:
<select id="city_id" disabled>
    <option value="0">- Выберите город -</option>
</select>

var all_regions=[];
var all_cites=[[],[],[]];
  
all_regions[0]=["московская обл","ростовская обл","саратовская обл"];
all_regions[1]=["киевская обл","львовская обл","харьковская обл"];
all_regions[2]=["минская обл","брестская обл","гроднинская обл"];
  
all_cites[0][0]=["Москва","Химки","Калуга"];
all_cites[0][1]=["Такой-то город","Такой-то город","Калуга"];
all_cites[0][2]=["Такой-то город","Такой-то город","Такой-то город"];
  
all_cites[1][0]=["Киев","Жмеринка","Бердычев"];
all_cites[1][1]=["Львов","Сокаль","Стрый"];
all_cites[1][2]=["Харьков","Полтава","Пирятин"];
  
all_cites[2][0]=["Минск","Такой-то город","Такой-то город"];
all_cites[2][1]=["Брест","Такой-то город","Такой-то город"];
all_cites[2][2]=["Гродно","Такой-то город","Вильно"];
  
country_id.onchange=function(){
    region_id.disabled=false;
    region_id.innerHTML="<option value='0'>- Выберите регион -</option>";
    myregion=this.value-1;
    if(myregion!=-1){
        for(var i=0;i<all_regions[myregion].length;i++){
            region_id.innerHTML+='<option value="'+(i+1)+'">'+all_regions[myregion][i]+'</option>';
        }
    }else{
        region_id.disabled=true;
        city_id.disabled=true;
    }
}
  
region_id.onchange=function(){
    city_id.disabled=false;
    city_id.innerHTML="<option value='0'>- Выберите город -</option>";
    var mycite=this.value-1;
    if(mycite!=-1){
        for(var i=0;i<all_cites[myregion][mycite].length;i++){
            city_id.innerHTML+='<option value="'+(i+1)+'">'+all_cites[myregion][mycite][i]+'</option>';
        }
    }else{
        city_id.disabled=true;
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon Куратор тега Веб-разработка
Senior .NET developer
Логика следующая.
Есть 3 селекта страна регион город
Со стороны php проверяется наличие параметров country region city
По умолчанию регион и город скрыты то есть не выводятся в разметке. При наличии в get запросе параметра страна отображается список регион и так далее.
Пример запроса

Select.php
Select.php?country=ru
Select.php?country=ru&region=31
Select.php?country=ru&region=31&city=309530

Последний возвращает Россия Белгородская область г. Старый Оскол
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы