Вот мой код:
$(function () {
var region = $('#region');
var city = $('#city');
var pickedRegionId = region.find(':selected').val();
var options;
if (pickedRegionId === '') {
console.log('region is empty, html() and disable');
city.html('');
city.attr('disabled', true);
}
region.change(function(){
console.log('region is changed');
pickedRegionId = $(this).val();
if (pickedRegionId !== '') {
city.html('');
console.log('loading cities');
getCities(pickedRegionId);
}
});
function getCities (regionId) {
city.attr('disabled', true);
city.html('<option>Loading...</option>');
$.get(
'/ajax/get_cities',
'region_id='+regionId,
function (responce) {
if (responce.result === 'success') {
$(responce.cities).each(function(){
options += '<option value="'+$(this).attr('id')+'">'+$(this).attr('city')+'</option>';
});
city.html(options);
city.attr('disabled', false);
}
}, 'json'
);
}
});
Когда страница загружается, все в порядке, я выбираю какой-то регион и выбираю с городами, заполненными данными ajax.
Но когда я выбираю другой регион, данные в выбранных городах просто расширяются новыми данными.
Так что проблема в том, что у меня есть города из обоих регионов (новый и старый). И не важно, сколько раз я выбираю другой регион, это просто добавление новых данных в выбор города. В коде все выглядит хорошо, и при изменении региона я добавил .html (''), поэтому он должен быть пустым перед вставкой полученных значений. Но я не могу понять, что это за ошибка.