Выбор района доставки указанного при регистрации

#
Выбор района доставки указанного при регистрации
Возникла следующая проблема - при оформлении заказа в адресе доставки не заполнялись поля, указанные при регистрации, а именно Область,Город и Район. Таким образом пользователю приходилось каждый раз выбирать значения, которые он уже указывал при регистрации.

Решение задачи было найдено в следующем(на примере Района города):
Select со списком районов загружается через AJAX запрос с передачей в качестве параметров ID города.
Функция, которая вызывается в данном случае - doSetCityArea().
В нее нам необходимо передавать 3-й параметр (значение по умолчанию), в котором указываем ID района города, выбранного пользователем при регистрации.
Далее нам необходимо обработать параметр в скрипте /hostcmsfiles/main.js, а именно function doSetCityArea(shop_city_id, path, default_id), где default_id и будет тем самым значением указанным пользователем при регистрации.
Теперь немного модернизируем тело функции doSetCityArea().
А именно:

for (var key in req.responseJS.result)
{
    oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key);
}


Заменим на:


for (var key in req.responseJS.result)
{
    if (key==default_id){oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key, true, true);}
    else {oSelect.options[oSelect.options.length] = new Option(req.responseJS.result[key], key);}
}


Таким образом полученный в ответе <option value="ID_Района_пользователя"> будет иметь атрибут selected="selected", что нам и нужно.

Данный алгоритм не ограничивается применением только к Району города.

Небольшое отступление:
1) "значение по умолчанию" нужно передавать в external_propertys, например $external_propertys['city_area_id'].
2) В XSL шаблоне "МагазинАдресДоставки" значение "city_area_id" нужно передать 3-им параметром в функции doSetCityArea().
iq-site
Авторизация