Подключение сервиса подсказок и стандартизации dadata.ru

Главные вкладки

Аватар пользователя webrelab webrelab 9 ноября 2017 в 7:12

Всем привет.

Подключаю в своём проекте подсказки от дадаты, возникла проблема с работой jQuery.

jQuery плагин от дадаты подключаю через form alter в #attach, так же подключаю скрипт, инициализирующий подсказки:

(function ($, Drupal) {
    Drupal.behaviors.custom_views = {
        attach: function (context, settings) {
            $("#fullname").suggestions({
                token: "ВАШ API-КЛЮЧ",
                type: "NAME",
            });
        }
    }
})(jQuery, Drupal);

Так же на сайте уже включен jQuery Update с версией jQuery 1.10
При попытке использования подсказок, в консоли сыпятся ошибки, связанные с плагином подсказок.
Если подключить перед этими скриптами файл http://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js из их примера, то подсказки у меня на сайте начинают работать как полагается, но сыпятся все остальные модули, использующие jQuery, например Chosen, или например перестаёт работать загрузка изображения.
Я пробовал подключать в других проектах всякие jQuery плагины и всё получалось. А тут засада какая-то. Может я не знаю про какие-нибудь особенности подключения скриптов?
P.S. Есть модуль в песочнице для подключения дадаты, но по их коду я не могу понять, что нужно сделать мне, что бы заработало.

Комментарии

Аватар пользователя webrelab webrelab 9 ноября 2017 в 12:16

Код ошибки касательно плагина дадаты
Uncaught TypeError: Cannot use 'in' operator to search for 'default' in undefined
at jquery.suggestions.min.js:1
at jquery.suggestions.min.js:1
at jquery.suggestions.min.js:1

И потом следом ругается уже на мой скрипт Uncaught TypeError: suggestions is not a function

Аватар пользователя webrelab webrelab 9 ноября 2017 в 12:46

Беру jQuery с которой плагин работает, ложу его в папку модуля jQuery update вместо текущего, обновляю страницу с формой, убеждаюсь, что теперь используется подменённая библиотека и ничего не меняется - ошибка такая же. Версия библиотеки однозначно ни причём.

Аватар пользователя BatKor BatKor 9 ноября 2017 в 13:04

Если все верно то как вы это обьясните Uncaught TypeError: suggestions is not a function
Какой код в файле Cannot use 'in' operator to search for 'default' in undefined
Вы еще должны подключить https://cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainreque...

Аватар пользователя webrelab webrelab 9 ноября 2017 в 13:52

Так ведь функция suggestion в плагине дадаты не подключилась из-за ошибки Cannot use 'in' operator to search for 'default' in undefined отсюда и ошибка, что suggestions не функция.
Я попробовал подключить не минифицированную версию плагина дадаты из https://github.com/hflabs/suggestions-jquery/tree/master/dist/js и ошибка пропала, всё заработало. Спасибо за помощь. Интересно, почему минифицированная версия не работает в друпале?

Аватар пользователя webrelab webrelab 9 ноября 2017 в 12:43

Как её можно нарушить, если jQuery update , файлы самого jQuery ставит в самый верх, а плагин и мой скрипт подключены ниже? Так же я использовал при подключении опцию 'scope' => 'footer' и плагин дадаты и мой скрипт падали в самый низ страницы и при этом ошибка та же, пока не подключу перед ними сам jQuery.

Аватар пользователя BatKor BatKor 9 ноября 2017 в 12:49

Странно странно, ну что да и не так, Я раньше пытался подключить через их js но уже не помню почему я отказался, Теперь всегда использую REST API https://dadata.ru/api/suggest/
Или jquery.ajax или axios на ваш выбор.

Аватар пользователя TheSoL TheSoL 2 декабря 2017 в 15:15

Извиняюсь за нескромный вопрос, а вы случайно для 7й версии через rest не будете модуль делать? Или может уже готовый или полуготовый где лежит, а Я не нашёл? Не охота велосипед изобретать..