Есть скрипт, который имеет список городов в файле, разделенных по регионам. Этот список представлят из себя многомерный массив на 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, пожалуйста, помогите готовым кодом.