#javascript #jquery-select2-4 #django-2.1
#javascript #jquery-select2-4 #django-2.1
Вопрос:
(Отказ от ответственности: это вопрос с самостоятельным ответом)
Я хотел настроить некоторые Select2 для полей моей формы, находясь в панели администратора Django (в частности, в change_list.html
шаблоне). Итак, я добавил необходимые скрипты на страницу (не полную версию), но при загрузке я получаю следующие ошибки:
Select2: An instance of jQuery or a jQuery-compatible library was not found. Make
sure that you are including jQuery before Select2 on your web page.
TypeError: a is undefined
TypeError: e is undefined
TypeError: $ is not a function
И когда вы ищете одну из этих ошибок (ну, не первую и не последнюю), ответы не на ту же тему (обычно это связано с плохой processResults
настройкой или проблемами с Bootstrap) или ни в документах, ни в других.
Как я могу это исправить?
Ответ №1:
Для исправления требуется два шага:
Установка переменной, вызываемой $
Это первое, о чем вы думаете, когда видите последнюю строку ( TypeError: $ is not a function
), и все скрипты обычно используют ее (кто не использует $
в своих скриптах?). Но когда вы изменяете его, вы все равно получаете эти ошибки:
TypeError: a is undefined
TypeError: e is undefined
Итак, мы должны пойти глубже…
Установка переменной, вызываемой jQuery
Эта ошибка может быть немного скрыта, так как нам приходится копаться в select2.js
скрипте (обычно вы используете уменьшенную версию, поэтому вместо нее отображается только $
).
Похоже, что иногда используется вызываемая переменная jQuery
, поэтому вам также придется настроить ее в вашем JS.
Как должно выглядеть исправление
Добавьте этот скрипт перед вашими сценариями Select2:
<script type="text/javascript">
// To prevent errors for Select2 JS
var $ = django.jQuery;
var jQuery = django.jQuery;
</script>