django-autocomplete-light教程:select2不是函数错误

时间:2016-07-26 08:59:28

标签: django jquery-select2 django-autocomplete-light

我在使用dal时遇到了麻烦,并尝试构建一个简单的示例。

我几乎与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)所以我在dal库上添加了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)我应该添加上面的所有插件吗?例如,[步骤3]的插件上有两个select2.js,我很困惑并想知道它们是否以不同的方式工作。(如果我删除其中一个,它就不起作用。 )

B)根据问题Django autocomplete light: field not populated,第2步不应该工作吗?为什么会出现错误?

C)在这个示例代码中,以下代码的部分似乎根本不起作用。如果没有管理员帐户,外键不会出现在文本字段中,换句话说,在列表中找不到任何内容。 (来自dal tutorial,它允许&#39;在管理员之外使用自动填充功能

{% 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并重新安排了已安装的应用程序。

2 个答案:

答案 0 :(得分:1)

首先,您需要包含Jquery,然后是您的第三方库选择字段。

  • Select2.min.js(JS文件的缩小版本)
  • Select2.min.css(CSS文件的缩小版本)
  • 然后导入autocomplete.js

答案 1 :(得分:0)

第一个select2库文件不存在。选择的链接引发主机未找到错误

select2库是相同的,如果你先评论它没有引发错误。您可以将库下载到静态文件夹中。

最后一个例子中的jquery链接也不存在。你可以下载jquery并把它放到静态文件夹中。