Как сохранить выбор в select списке, сгенерированным JS?
Есть скрипт, который имеет список городов в файле, разделенных по регионам. Этот список представлят из себя многомерный массив на PHP. Например:
Код: $city = array ( 'Регион' => array ( 1 => 'Город1', 2 => 'Город2', ), ); У скрипта есть два select'а - для городов и регионов: Код: <select name="region" onchange="loadCity(this)"> <option></option> <?php // заполняем список регионов foreach ($city as $region => $cityList) { // вывод списка регионов echo '<option value="' . $region . '" '; // если вдруг выведенный регион совпадает с выбранным ранее в запросе, то отмечаем его if ($region == $_POST['region']) echo "selected"; // закрывающий HTML блок простого вывода списка регионов echo '>' . $region . '</option>' . "\n"; } ?> </select> <select name="city" disabled="disabled"> <option>Выберите город</option> </select> При выборе области, сработает функция loadCity, которая подгрузит список городов, вот она: Код: function loadCity(select) { var citySelect = $('select[name="city"]'); // посылаем AJAX запрос, который вернёт список городов для выбранной области $.getJSON('index.php', {action:'getCity', region:select.value}, function(cityList){ citySelect.html(''); // очищаем список городов // заполняем список городов новыми пришедшими данными $.each(cityList, function(i){ citySelect.append('<option value="' + i + '">' + this + '</option>'); }); }); } Ну и PHP скрипт который отдаст в JSON формате список городов конкретной области: Код: <?php // файл index.php require_once('city.php'); if (isset($_GET['action']) && $_GET['action'] == 'getCity') { if (isset($city[$_GET['region']])) { echo json_encode($city[$_GET['region']]); // возвращаем данные в JSON формате; } else { echo json_encode(array('Выберите область')); } exit; } ?> Но проблема в том, что если добавить на страницу кнопку, и по кнопке выводить информацию о выбранном городе на той же странице (без перехода куда-то еще), то выбранный город сразу теряется и поле становится серым, даже неактивным (висит надпись "Выберите город"), и чтобы снова выбрать город, нужно поменять регион, потом поменять еще раз на правильный и выбрать город. Вопрос: как сохранить в списке не только регион, но и выбранный город (т.е. проблема в select name="city")? Как-то можно добавить "selected" для города? P.S. Я совсем ничего не понимаю в JS, пожалуйста, помогите готовым кодом. |
В текущем варианте после нажатия на кнопку страница перезагружается?
|
Да, происходит перезагрузка. И после нее поле для выбора города становится неактивным, соответственно для того, чтобы снова выбрать город сначала нужно изменить регион. Более того, если не изменяя город, изменить другие данные в форме, то ID города не передается.
|
Тогда на стороне php нужно:
1. Предвыбрать в селект нужного региона 2. Получить все города для этого региона 3. Сгенерировать список городов для этого региона в селект city 4. Предвыбрать нужный город в селекте |
Специально зарегистрировался, что бы спросить у вас.
Как в этом коде, можно посдставить город в запрос, что бы при заходе на страницу, выпадал селект, уже с регионами того города, который мы подставили. Как это можно реализовать ? Спасибо большое. :) |
Часовой пояс GMT +3, время: 16:50. |