2016-07-26 2 views
8

У меня возникли проблемы при использовании dal и попытался построить простой пример.django-autocomplete-light учебник: select2 не является функцией ошибки

Я сделал почти то же самое, что и Django autocomplete light: field not populated, а также применил ответ по ссылке.

Вот шаги, которые я пережившие:

Шаг 1) Когда я добавляю, как это на заголовке HTML (так же, как и выше ответ):

<link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" /> 
    <link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" /> 
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/autocomplete.init.js"></script> 
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.js"></script> 

Погрешность браузера инспектора консоль выглядит так:

Uncaught ReferenceError: yl is not defined(anonymous function) @ autocomplete.init.js:75select2.js:117 
Uncaught ReferenceError: yl is not defined(anonymous function) @ select2.js:117 

Шаг 2) Так я добавил jquery.js и другие JS-файлы в библиотеке декалитров:

<link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/vendor/select2/dist/css/select2.css" type="text/css" media="all" rel="stylesheet" /> 
    <link href="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.css" type="text/css" media="all" rel="stylesheet" /> 
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script> 
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/jquery.init.js"></script> 
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/jquery.init.js"></script> 
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/autocomplete.init.js"></script> 
    <script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/autocomplete_light/select2.js"></script> 

И ошибка изменилась так:

select2.js:66 Uncaught TypeError: $(...).select2 is not a function(anonymous function) @ select2.js:66dispatch @ jquery.js:4435elemData.handle @ jquery.js:4121trigger @ jquery.js:4350(anonymous function) @ jquery.js:4901each @ jquery.js:374each @ jquery.js:139trigger @ jquery.js:4900initialize @ autocomplete.init.js:45each @ jquery.js:374each @ jquery.js:139(anonymous function) @ autocomplete.init.js:50fire @ jquery.js:3099fireWith @ jquery.js:3211ready @ jquery.js:3417completed @ jquery.js:3433 

Шаг 3) И последнее, я нашел эти два плагина и добавил, и это сработало!

Plugins of [Step 2)] + 
    <link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" /> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script> 

Так вот мои вопросы:

A) Должен ли я добавить все плагины выше? Например, есть два select2.js для плагинов [шаг 3]], и я смущен и задаюсь вопросом, работают ли они по-разному. (Если я удалю один из них, он не работает.)

B) В соответствии с вопросом Django autocomplete light: field not populated, не должен ли работать шаг 2? Почему возникает ошибка?

C) В этом примере кода часть следующего кода кажется неработоспособной. Если не с учетной записью администратора, внешний ключ не отображается в текстовом поле, другими словами, ничего не может быть найдено в списке. (От dal tutorial, это позволяет «Использование autocompletes вне админа»)

{% block footer %} 
<script type="text/javascript" src="http://dal-yourlabs.rhcloud.com/static/collected/admin/js/vendor/jquery/jquery.js"></script> 
{{ form.media }} 
{% endblock %} 

@ Я также проверил django-autocomplete-light not working - select2 is not a function и изменить установленное приложение не работает.

ответ

0

Первый файл библиотеки select2 не существует. выбранная ссылка raise Host Not Found Error

select2 библиотека - это то же самое, если вы сначала прокомментируете это, не подняли ошибку. вы можете загрузить библиотеку в свою статическую папку.

также ссылка jquery в последнем примере не существует. вы можете загрузить jquery и поместить его в статическую папку.

1

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

  • Select2.min.js (уменьшенная версия файла JS)
  • Select2.min.css (уменьшенная версия файла CSS)
  • импортировать autocomplete.js
Смежные вопросы