Ваши комментарии

В 2015 не успели, будет в январе.

Такая улица есть в городе Клин, во всяком случае так считает ФИАС (справочник адресов налоговой), по которому работают Подсказки.

По поводу трехзначных номеров дома – это корректное поведение.

Подсказки работают по ФИАС, и в нем нет некоторых реально существующих домов. Поэтому мы предлагаем существующие дома, но не ограничиваем пользователя ими.

Примерно так:

function join(arr) {
    var separator = arguments.length > 1 ? arguments[1] : ', ';
    return arr.filter(function(n) {
        return n;
    }).join(separator);
}

function enableSuggestions(ui) {
    ui.address.suggestions({
        serviceUrl: "https://dadata.ru/api/v2",
        token: "***",
        type: "ADDRESS",
        onSelect: showSelected
    });

    function showSelected(suggestion) {
        var address = suggestion.data;
        ui.index.val(address.postal_code);
        ui.region.val(join([
            join([address.region_type, address.region ], ' '), 
            join([address.area_type, address.area ], ' ')
        ]));
        ui.city.val(join([
            join([address.city_type, address.city ], ' '),
            join([address.settlement_type, address.settlement ], ' ')
        ]));
        ui.street.val(join([address.street_type, address.street ], ' '));
        ui.house.val(join([
            join([address.house_type, address.house ], ' '),
            join([address.block_type, address.block ], ' ')
        ]));
        ui.flat.val(join([address.flat_type, address.flat ], ' '));
    }
}

enableSuggestions({
    address: $("#otkuda"),
    index: $('#index1'),
    region: $('#region'),
    city: $('#city'),
    street: $('#street'),
    house: $('#house'),
    flat: $('#flat')
});

Примерно так:

var parts = [$region, $city, $street];
parts.forEach(function($part) {
    $part.change(function() {
        onPartChange(formatParts(parts));
    });
});

function join(arr) {
    var separator = " ";
    return arr.filter(function(n){return n;}).join(separator);
}

function formatParts(parts) {
    var partialValues = parts.map(
            function($el) { return $el.val(); }
        );
    return join(partialValues);
}

function onPartChange(newVal) {
    suggestOne(newVal)
    .done(function(response) {
        var suggestion = response.suggestions[0];
        $address.val(suggestion.value);
    });
}

function suggestOne(query) {
    var serviceUrl = "https://dadata.ru/api/v2/suggest/address",
        token = "***",
        request = {
            "query": query
        },
        params = {
            type: "POST",
            contentType: "application/json",
            headers: {
                "Authorization": "Token " + token
            },
            data: JSON.stringify(request)
        };
    return $.ajax(serviceUrl, params);
}

Добрый день!

Зарегистрируйтесь, зайдите в Личный кабинет, и нажмите "Сгенерировать" около API-ключа

Сервис поддержки клиентов работает на платформе UserEcho