JSFiddle - React, Tailwind, and code Playground
HTML
<div class="outer" id="countryOuter">
<input id="country" placeholder="Страна">
</div>
<div class="outer" id="regionOuter">
<input id="region" placeholder="Регион">
</div>
<div class="outer" id="cityOuter">
<input id="city" placeholder="Город">
</div>
CSS
.outer{
margin-bottom: 30px;
}
JavaScript
$( document ).ready(function() {
getCountries();
var countriesArr = [],
countriesObj = {};
var regionsArr = [],
regionsObj = {};
var citiesArr = [],
citiesObj = {};
$('#region').attr('disabled', 'disabled');
$('#city').attr('disabled', 'disabled');
function getCountries() {
$.ajax({
url: "http://api.vk.com/method/database.getCountries?v=5.69",
dataType: "jsonp",
success: function( data ) {
var countriesRaw = data['response']['items'];
console.log( countriesRaw );
countriesArr = countriesRaw.map(function(country) {
return country.title;
});
console.log(countriesArr);
countriesRaw.forEach(function(country) {
countriesObj[country.title] = country.id;
});
console.log(countriesObj);
document.getElementById('countryOuter').style.display = 'block';
$( "#country" ).autocomplete({
delay: 0.5,
source: countriesArr,
select: function(event, ui) {
$('#country').attr('disabled', 'disabled');
$('#region').removeAttr('disabled');
console.log(event, countriesObj[ui.item.label]);
getRegions(countriesObj[ui.item.label]);
}
});
}
});
};
function getRegions(countryId) {
$.ajax({
url: "http://api.vk.com/method/database.getRegions?v=5.5&country_id=" + countryId,
dataType: "jsonp",
success: function( data ) {
var regionsRaw = data['response']['items'];
console.log( regionsRaw );
regionsArr = regionsRaw.map(function(region) {
return region.title;
});
console.log(regionsArr);
regionsRaw.forEach(function(region) {
regionsObj[region.title] = region.id;
});
console.log(regionsObj);
console.log('____countryId', countryId);
$( "#region" ).autocomplete({
delay: 0.5,
source: regionsArr,
select: function(event, ui) {
$('#region').attr('disabled', 'disabled');
$('#city').removeAttr('disabled');
...