Всем привет.
Подключаю в своём проекте подсказки от дадаты, возникла проблема с работой jQuery.
jQuery плагин от дадаты подключаю через form alter в #attach, так же подключаю скрипт, инициализирующий подсказки:
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. Есть модуль в песочнице для подключения дадаты, но по их коду я не могу понять, что нужно сделать мне, что бы заработало.
Комментарии
Если речь о D7, То у вас JS неверно оформлен. Шаблон JS должен выглядеть так:
Drupal.behaviors.myCustomJS = {
attach: function(context, settings) {
// Ваш код
}
};
})(jQuery);
Вот полезная ссылка
Подключал по разному, не работает, пока не добавишь перед плагином дадаты сам jQuery.min.js
В смысле не верен js?
Какие ошибки?
Код ошибки касательно плагина дадаты
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
Вероятно библиотека jquery.suggestions.min.js несовместима с вашей текущей версией jQuery
Беру jQuery с которой плагин работает, ложу его в папку модуля jQuery update вместо текущего, обновляю страницу с формой, убеждаюсь, что теперь используется подменённая библиотека и ничего не меняется - ошибка такая же. Версия библиотеки однозначно ни причём.
Если все верно то как вы это обьясните 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...
Так ведь функция suggestion в плагине дадаты не подключилась из-за ошибки Cannot use 'in' operator to search for 'default' in undefined отсюда и ошибка, что suggestions не функция.
Я попробовал подключить не минифицированную версию плагина дадаты из https://github.com/hflabs/suggestions-jquery/tree/master/dist/js и ошибка пропала, всё заработало. Спасибо за помощь. Интересно, почему минифицированная версия не работает в друпале?
ну да все верно, что то облажался
Думаю нарушена последовательность подключения файлов
Как её можно нарушить, если jQuery update , файлы самого jQuery ставит в самый верх, а плагин и мой скрипт подключены ниже? Так же я использовал при подключении опцию 'scope' => 'footer' и плагин дадаты и мой скрипт падали в самый низ страницы и при этом ошибка та же, пока не подключу перед ними сам jQuery.
Странно странно, ну что да и не так, Я раньше пытался подключить через их js но уже не помню почему я отказался, Теперь всегда использую REST API https://dadata.ru/api/suggest/
Или jquery.ajax или axios на ваш выбор.
Если будете использовать дадата через rest не забывайте о JSON.stringify()
Извиняюсь за нескромный вопрос, а вы случайно для 7й версии через rest не будете модуль делать? Или может уже готовый или полуготовый где лежит, а Я не нашёл? Не охота велосипед изобретать..