Git Product home page Git Product logo

kladrapi-jsclient's People

Contributors

denis-zavgorodny avatar huksley avatar ivanromanko avatar lexich avatar majerkravchuk avatar oct8cat avatar shcherbanich avatar sphinxy avatar veksa avatar xescoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kladrapi-jsclient's Issues

Как по ID дома получить название города и улицы

День добрый. Прошу помощи в следующих вопросах.
Подскажите пожалуйста, почему встречаются ситуации, когда у нескольких домов по соседству с нужным мне домом одинаковые 19ти значные ID? И если он не является уникальным, то как такой создать?
И второй вопрос, как зная ID дома, получить город, улицу и номер дома? (если не сложно, то простым примером)

Прошу простить за банальные вопросы, почти не было практики с JavaScript.

Firefox 34

В firefox 34 для Win7 не работает кладр - каждый XMLHttpRequest в firebug отображается со статусом aborted ( нажатие клавиши на клавиатуре = одному XMLHttpRequest )
В firefox 34 для Kubuntu 14.10 64bit и во всех других браузерах (IE, Chrome, Chromium, Opera) - проблемы не возникает.

Jquery версии 1.7.2
Кладр пробовали 2.X И 1.X версии

Код, к-й используется:

<script type="text/javascript">
(function($) {
        $(function() {
            var container = $('#brthForm');

            // Автодополнение областей
            container.find('#region').kladr({
                token: 'скрыт',
                key: 'скрыт',
                // labelFormat: LabelFormat,
                type: $.kladr.type.region,
                select: function(obj) {
                    // Изменения родительского объекта для автодополнения улиц
                    container.find('#region').attr('data-rparent-id', obj.id);
                    $( '#rparent_id' ).val( obj.id );
                    $( '#okato' ).val( obj.okato );
                }
            });

            // Автодополнение населённых пунктов
            container.find('#city').kladr({
                token: 'скрыт',
                key: 'скрыт',
                withParents: false,
                // labelFormat: LabelFormat,
                type: $.kladr.type.city,
                parentType: $.kladr.type.region,
                parentId: function() { return container.find('#region').attr('data-rparent-id') },
                select: function(obj) {
                    // Изменения родительского объекта для автодополнения улиц
                    $( '#okato' ).val( obj.okato );
                }
            });
        });
}) (jQuery);
</script>

Пробовал безуспешно заменить метод getJSON на ajax

        $.ajax({
            dataType: "json",
            url: $.kladr.url + "?callback=?",
            data: toApiFormat(query),
            mimeType:'text/plain',
        }).done(function (data) {
                if (timeout) {
                    callback(data.result || []);
                    clearTimeout(timeout);
                }
            });

Не находит некоторые дома и улицы в режиме oneString

Здравствуйте.
Во-первых, спасибо за ваш труд, отличный проект.

Проблема: в режиме oneString плагин не возращает дом по query "москва клары цеткин 20" и улицу по query "нахабино красноармейская".

Без oneString оба объекта возвращаются.

Проверить можете на вашем сайте в разделе с примерами.

Версия плагина 2.1.3

не корректно работает setValues()

при наличии проспекта и улицы с одинаковым названием выбирает первое попавшее, что не всегда правильно.
например:

  • г.Санкт-Петербург, площадь Ленина
  • г.Санкт-Петербург, улица Ленина

при поиске
.setValues({city:"Санкт-Петербург",street:"Ленина"},selector)
выдаст площадь.

ввод:
ул. Ленина - не помогает
если вместо названий вводить ид элементов, ничего не находит.

[QUESTION] Валидация введеного поля

$('#street').kladr({ token: '-----', parentType: $.kladr.type.city, parentId: '2600000100000', type: 'street', check: function (obj) { console.log(obj); }, });

Соответственно #street это интуп с type="text".

Вопрос такой. console.log() срабатывает (и запросы соответственно отправляются) только до тех пор пока я ввожу что-то заведомо неверное (случайные строки, кракозябры, что угодно). Как только я ввожу что-то валидное на подобии "Ленина" он находит "пл. Ленина" и возвращает в obj объект с Лениным и все последующие запросы не отправляются при изменении #street. Почему так?

parentInput и предустановленные значения

В примере с формами (в form.html) если предустановить значения города и улицы:
<div class="field"> <label>Город</label> <input type="text" name="city" value="Москва"> </div> <div class="field"> <label>Улица</label> <input type="text" name="street" value="Дорожная ул."> </div>

то значение улицы пропадает, это ошибка или можно как-то обойти такое поведение?

Разделить коллбэки для событий «стало активно» и «выбрано»

Можно ли разделять коллбэки для двух событий:

  • когда пользователь навел курсор на пункт списка (или сделал его активным стрелкой)
  • когда пользователь фактически выбрал пункт: кликнул или нажал Enter

Возможно это уже можно сделать, но я не догоняю как.

Доработка jQuery-плагина

  1. Если на одной странице два разных поля, например, с городом, то при выборе одного города заполняются оба поля.

Как исправить: возьмём example1 и добавим еще одно поле
Возникает описанная проблема. Но если вместо
$( '[name="street"]' ).kladr({
написать
$( '[name="street"]' ).each(function(){
$( this ).kladr({
то всё работает так, как нужно. Соответственно, нужно подобным образом изменить плагин.

  1. Проверка, заполнено ли "родительское" поле, работает только для улиц и зданий.
    Предлагаю в начало функции validate добавить следующий код:

if (options.parentType && !options.parentId)
{
console.error('parentType is defined and parentId in not');
return false;
}

Таким образом, если указано, что поле зависит от другого, то подсказка для него не будет появляться, пока не заполнено родительское.

Ломает автоматическую сборку статики

В проекте используется django-pipeline, жмет статику.

При сборке выпадает вот такая ошибка:
ValueError: The file 'jquery.kladr/kladr/css/images/spinner.png' could not be found with <pipeline.storage.PipelineCachedStorage object at 0x7f41b9aabc10>

Т.е. css ссылается на несуществующий файл. Достаточно скопировать крутилку по этому пути и все заработает.

Как программно очистить поля ввода?

Добрый день. Подскажите как программно очистить поля ввода. Делаю так, но не выходит.
$region.kladr('controller').clear();
$district.kladr('controller').clear();
$city.kladr('controller').clear();
$street.kladr('controller').clear();
$building.kladr('controller').clear();
Заполняю поля тоже программно:
$.kladr.setValues({
region: getRegion(AdministrativeArea),
city: getСity(Locality),
street: getStreet(Thoroughfare),
building: Premise
});

Дело в том, что если поля street и building заполнены, а потом вызывается заполнение полей, но поля street и building пустые, остаются предыдущие значения. Из чего я делаю вывод что очистить поля у меня не вышло.

Из проекта ушёл мейнтейнер

Давно планировал написать, всё руки никак не доходили. В связи с тем, что у меня сейчас практически нет свободного времени, я покидаю проект kladrapi-jsclient. Возможно я когда-нибудь вернусь, как это уже было в августе 2014, но в обозримом будущем это вряд ли произойдет. На данный момент проект лишился своего мейнтейнера. Если ты, дорогой мой коллега, заинтересован в развитии проекта, ты можешь взять эту обязанность на себя. Для этого напиши Илье ([email protected], https://github.com/garakh/) чтобы он тебя добавил в участники проекта.

Событие change

А вызывается ли change при смене значения в инпуте?
Именно стандартное событие change.

задваивание

Приветствую.
Такой вопрос:
если например в файле http://kladr-api.ru/content/examples/js/example4.js
в строку 219 вставить:
console.log(address);

то в консоле будет 2 строки, почему?

На моей карте есть передвигаемая метка, так вот их появляется две. в этом и проблема.

Response to preflight request doesn't pass access control check

Вот что я вижу в консоли:
Failed to load http://kladr-api.ru/api.php?callback=jQuery32108009858212794962_1533629303183&contentType=city&oneString=true&withParent=true&limit=10&query=%D0%B2&_=1533629303195: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.

Хочу подключить плагин к сайту на django. Плагин склонировал, запустил билд, вроде как подключил через webpack (не ругается что, например kladr is not a function).

В моём js файле всё предельно просто:

$('#id_region').kladr({
    type: $.kladr.type.city
});

Очевидно, я делаю что-то не так, раз такого issue до сих пор нет, значит у других нет с этим проблем, но я почти целый день гуглю, пытаюсь справиться с этой ошибкой и делаю, вроде бы, всё как в exampl'ах.

checkAutoFill()

Поясните пожалуйста, что делает эта функция, из-за нее невозможно сразу после загрузки страницы использовать setValueById (значение появляется и сразу исчезает).
$city.kladr({
type: $.kladr.type.city,
oneString: true
});

$city.kladr('controller').setValueById(8900000600000);

Без нее все замечательно работает. Заранее спасибо

Добавить обработку touch-событий

В простейшем случае

ac.on('touchstart mouseenter', 'li', function(){
ac.on('touchleave mouseleave', 'li', function(){

вместо

ac.on('mouseenter', 'li', function(){
ac.on('mouseleave', 'li', function(){

Не знаю, насколько кроссплатформенно, но мои проблемы решило. Ничего, что на русском?

Возможность фильтровать список значений в списке

По аналогии с buildAddress(), чтобы можно было проанализировать objs и выдать решение — отображать данный адрес в списке предлагаемых или нет.

Пример использования:

$.kladr.checkAddress = function (objs) {

    var availOkatos = [ "45000000000", "46000000000", "41000000000", "40000000000" ];

    if (availOkatos.indexOf(objs[0].okato) !== -1) {
        return true;
    }

    return false;
}

Помогите, пожалуйста, а то не смог найти ничего подобного в документации, примерах…

Программная вставка улицы вызывает ошибку parentType must equal "city"

Использую ваш плагин для jQuery. Программно вставляю данные в форму, использую конструкцию:

    $region.kladr({type: $.kladr.type.region, verify: true});
    $district.kladr({type: $.kladr.type.district, verify: true});
    $city.kladr({type: $.kladr.type.city, verify: true});
    $street.kladr({type: $.kladr.type.street, verify: true, withParents: true});
    $building.kladr({type: $.kladr.type.building, verify: true});

    $region.val(options.data.region).trigger('change');
    $district.val(options.data.district).trigger('change');
    $city.val(options.data.city).trigger('change');
    $street.val(options.data.street).trigger('change');
    $building.kladr({'verify': true});
    $building.val(options.data.building).trigger('change');

на $street вылетает с: parentType must equal "city"

Получить data-kladr-id без клика по элементу из списка

Здравствуйте. Есть проблема, при вводе названия города (Сочи, к примеру),если пользователь не кликнет по другому полю, а сразу нажмет Enter, то data-kladr-id инпуту не присвоится. Как можно решить эту проблему?

ваш плагин расширил класс Array методом unique, который переопределялся нашим движком (своя реализация Array.prototype.unique).

Cталкнулся с проблемкой с jquery плагином. Тупил, час убил на поиск проблемы.
Оказалось, ваш плагин расширил класс Array методом unique, который переопределялся нашим движком (своя реализация Array.prototype.unique).
Как разультат, метод плагина 'labelFormat' работал некорректно.
Короче, я к чему эту поэму пишу. Вы, где-нибудь черканите в доках, мол Array.prototype.unique используем. А еще лучше, реализуйте array.unique внутри неймспейса плагина, отказавшись от экстенда прототипа, чтоб не было проблем с другими либами (глобальный неймспейс это не гуд, но многие мастадонты его все же используют). Мало ли другие тоже на эти грабли наступят.

type не задается

Здравствуйте, у вас описано что type - перечисление используемых типов объектов. Список значений: region (область, регион), district (район), city (населённый пункт), street (улица), building (строение).
Но при этом если я указываю
.kladr({
type: "region,city" ИЛИ type: ["region", "city"]
});
И через запятую строкой и массивом и объектом, все не работает, к примеру есть город Киров, в разных областях, у вас выводится просто два раза г. Киров, через одну строку не походит т.к. не нужны улицы, как правильно задать что бы был регион или район + город, это баг что перечисление типов не работает?

Label в input street

Всем привет! На demo видно, что улицы могут быть: бульвары, ГСК, проспекты и т.д.

Возник вопрос, как можно не менять label street - а записать в input label+street

Пример:

им Павла Корчагина -> Бульвар им Павла Корчагина

Есть пример использования метода validate?

Не могу понять как работает метод. Можно пример его использования показать? Этот метод позволяет проверить валидность введённых данных в форму? Если нет, то как это можно сделать? Заранее спасибо.

Добавить отключение плагина

Форма ввода адреса одна на несколько стран, когда выбрана Россия, удобно пользоваться плагином, но если выбрать другую страну, то автокомплит продолжает работать.
Нельзя ли добавить какой-нибудь метод типа .stopComplete чтобы на время отключать функцию автокомплита?
Или возможно это уже есть?

Как получить доступ к региону в labelFormat()?

Использую автодополнение по городам:
type: $.kladr.type.city
typeCode: $.kladr.typeCode.city

Хотелось бы выводить в списке вариантов область для каждого города, на случай, если найдено несколько городов с одинаковым названием.
Например, город Мирный.

Подключения функционала к динамически добавляемым элементам

Здравствуйте! Подскажите как быть? На странице есть поле ввода, в немавтозаполнения работает отлично :) Есть кнопка создающая такое же поле программно рядом. И вот в нем уже не работает автозаполнение. Как к созданному программно полю можно подключить функционал. Заранее спасибо.
Вот код которым я его создаю.

<script>
    $(function() {
        $("#add").click(function () {
        $("<div class='param'><div class='box'><input type='text' name='city' placeholder='Город'></div> ).insertBefore("#form_status_added"); 
        })
     });
    </script>

position: $input.offset() может работать неверно

в случаях использования стилей с медиа запросами $.offset() может работать не верно.
решает проблему стандартный getBoundingClientRect

function position() {
    var inputOffset = $input[0].getBoundingClientRect(),
        // inputOffset = $input.offset(),
        inputWidth = $input.outerWidth(),
        inputHeight = $input.outerHeight();

не работает плагин

Добрый день
Не получается при выборе в SELECT передать названия улиц в 'user-adress'
В SELECT выбираются населенные пункты
$.kladr.url = 'http://kladr-api.ru/api.php';

$(function () {

// Form example
(function () {
    var $container = $(document.getElementById('form'));

    var $district = $container.find('[name="district"]'),
        $city = $container.find('[name="city"]'),
        $street = $container.find('[name="user-adress"]'),
        $building = $container.find('[name="user-house"]');


    $district.kladr('type', $.kladr.type.district);
    $city.kladr('type', $.kladr.type.city);
    $street.kladr('type', $.kladr.type.street);
    $building.kladr('type', $.kladr.type.building);

    // Отключаем проверку введённых данных для строений
    $building.kladr('verify', false);
})();

});

//


//
//<input data-kladr-id="2303600000000" autocomplete="off" name="district" id="district" //type="hidden">
//

// // //Агой //Агуй-Шапсуг //Вольное //Георгиевское //Греческий //Дедеркой //Дзеберкой //Кирпичное //

//<input autocomplete="off" maxlength="90" name="user-adress" id="user-adress" //class="component-cart-input size-4" value="" type="text">
//<input maxlength="3" name="user-house" id="user-house" class="component-cart-input size-2" //value="" type="text">

//


//

Как использовать функции valueFormat и labelFormat?

default
При вводе одной строкой и выбранном городе необходимо выводить только улицы и дома, а вывод выполняется с индексом, регионом и городом есть ли способ отсечь? Как использовать функции valueFormat и labelFormat?

Не правильно отображаются дробные номера домов

Добрый день, имеется проблема с дробными домами, просто нельзя ввести после знака "/" какие либо числа, сервер отвечает пустым результатом.
К примеру если в form.html ввести -

Город: Ставрополь
Улица: 50 лет ВЛКСМ
Дом: 8/2

То получаем ответ

{"searchContext":{"contentType":"building","streetId":"26000001000000300","query":"8\/2","limit":10},"result":[]}

Хотя этот дом был в подсказках и по тому, что отправляется на api query: "8/2" то это не проблема на js стороне а что то с сервером.

Request error

Постоянно получаю данную ошибку на простом примере. Есть поле с фиксированным городом. Подсказка нужна по адресам.

 $('#client-address').kladr({
        token: '...',
        key: '...',
        type: $.kladr.type.street,
        parentType: $.kladr.type.city,
        parentId: '7700000000000'
    });

В итоге как только ввожу пару символов подсказки отваливаются (при это на первую букву реагируют). Наблюдается такое как локально, так и на внешней development-площадке
В чем может быть проблема?

Не работает с JQuery 3+

Не работает с JQuery начиная с 3-й версии. Видимо, из-за того, что в ней нет свойства context.

невозможно вбить адреса

Доброе время суток.

За счёт того, что объеденены 3 и 4 уровни кладр
ГГГ – код города;
ППП – код населенного пункта;
не возможно корректно вбить адрес например такой
Тамбовская Область, Город Мичуринск, Микрорайон Кочетовка, Улица Строительная, 10
Московская Область, Климовск Город, Южный Поселение, СНТ Весна-1 Улица
это как нибудь обходится?

Проспекты превращаются в улицу

Если вбивать адрес г.Москва, Зеленый проспект, д.83, то в результирующей строке будет г.Москва, ул. Зеленый, д.83. Что некорректно, т.к. такой улицы нет. В Комбобоксе при этом корректно предлагается проспект

Вызов метода check с ошибкой

Если набрать "москва", то всё ок
Если набрать "мос"+стрелка+enter - тоже ок
Если набрать "мос" и ткнуть мышкой в первую строку - "Неверно введено название населённого пункта"

Похоже, при нажатии мышкой, input теряет фокус, валидация идёт с буквами "мос", и не проходит. Хотя в момент вызова check(null) в поле уже стоит "Москва" (и select() корректно вызван два раза).

Город по умолчанию

Собственно вопрос до боли в зубах простой, есть плагин для joomla под виртуемарт.
ТЗ состоит в том чтобы избавить пользователя от необходимости вбивать город (по умолчанию город доставки один, СПб, да и то только пара районов. Как вывести город по умолчанию (без возможности правки) чтобы пользователь вбивал только адрес и дом (если я правильно понял, копать надо тут)

city.kladr({
            token: token,
            type: jQuery.kladr.type.city,
            withParents: true,
            labelFormat: LabelFormat,
            verify: true,




            select: function( obj ) {
                //city.val(obj.typeShort+'. '+city.val());
                //city.parent().find( 'label' ).text( obj.type );
                street.kladr( 'parentType', jQuery.kladr.type.city );
                street.kladr( 'parentId', obj.id );
                building.kladr( 'parentType', jQuery.kladr.type.city );
                building.kladr( 'parentId', obj.id );
                city.change();
                Log(obj);

            },
            check: function( obj ) {
                if(obj) {
                    //city.parent().find( 'label' ).text( obj.type );
                    street.kladr( 'parentType', jQuery.kladr.type.city );
                    street.kladr( 'parentId', obj.id );
                    building.kladr( 'parentType', jQuery.kladr.type.city );
                    building.kladr( 'parentId', obj.id );
                } 

                Log(obj);

            }
        });

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.