Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2014, 02:10
Новичок на форуме
Отправить личное сообщение для Сергей Новиков Посмотреть профиль Найти все сообщения от Сергей Новиков
 
Регистрация: 08.07.2014
Сообщений: 2

Как сохранить выбор в 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, пожалуйста, помогите готовым кодом.
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2014, 09:41
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

В текущем варианте после нажатия на кнопку страница перезагружается?
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2014, 10:16
Новичок на форуме
Отправить личное сообщение для Сергей Новиков Посмотреть профиль Найти все сообщения от Сергей Новиков
 
Регистрация: 08.07.2014
Сообщений: 2

Да, происходит перезагрузка. И после нее поле для выбора города становится неактивным, соответственно для того, чтобы снова выбрать город сначала нужно изменить регион. Более того, если не изменяя город, изменить другие данные в форме, то ID города не передается.
Ответить с цитированием
  #4 (permalink)  
Старый 08.07.2014, 10:39
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

Тогда на стороне php нужно:
1. Предвыбрать в селект нужного региона
2. Получить все города для этого региона
3. Сгенерировать список городов для этого региона в селект city
4. Предвыбрать нужный город в селекте

Последний раз редактировалось WorM32, 08.07.2014 в 10:45.
Ответить с цитированием
  #5 (permalink)  
Старый 10.12.2014, 23:05
Новичок на форуме
Отправить личное сообщение для jsnew Посмотреть профиль Найти все сообщения от jsnew
 
Регистрация: 10.12.2014
Сообщений: 1

Специально зарегистрировался, что бы спросить у вас.

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

Как это можно реализовать ?

Спасибо большое.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Как это реализовать на JS Bezlyj Общие вопросы Javascript 6 06.03.2012 09:20
Как реализовать отключения JS кода через админку ? lamer Серверные языки и технологии 4 08.02.2012 17:23
Как сохранить css всей страницы? KupueIIIKo Events/DOM/Window 1 20.01.2012 10:39
Как вывести содержимое PHP файла с помощью JS? pavdin Серверные языки и технологии 6 22.12.2010 14:16