0

我正在使用 django-autocomplete-light 来呈现一些自动完成选项。

我在网站上有一个地方可以正常工作,但是还有另一个地方它不工作,实际上它部分工作。

自动完成选项呈现得很好,但是当用户单击其中一个时,它会抛出:

未捕获的类型错误:对象 [object Object] 没有方法“yourlabsWidget”

有什么区别?

在它工作的页面上,我正在渲染整个表单。在这个小部件中,我只使用成语 {{ form.field }} 中的字段。

编辑

来自 django-autocomplete-light 的 javascript 文件在两个页面上都加载得很好。

有人有线索吗?

编辑 2

<head>
    <script type="text/javascript" src="/static/js/jquery/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="/static/js/jquery/jquery-ui-1.9.2.custom.min.js"></script>
    <script type="text/javascript" src="/static/js/bootstrap/bootstrap.min.js"></script>
    <link rel="stylesheet" type="text/css" href="/static/css/jquery/jquery-ui-1.9.2.custom.min.css">
    <link rel="stylesheet" type="text/css" href="/static/css/bootstrap/bootstrap.css">
    <link rel="stylesheet" type="text/css" href="/static/css/main.css">

<script type="text/javascript" src="/static/autocomplete_light/autocomplete.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/widget.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/addanother.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/text_widget.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/remote.js"></script>
<link rel="stylesheet" type="text/css" href="/static/autocomplete_light/style.css">
    <script data-main="/static/js/rotas.js/main.js" src="/static/js/require/require.js"></script>    
<script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="main" src="/static/js/rotas.js/main.js"></script>

4

1 回答 1

4

如果 yourlabsAutocomplete 扩展被正确添加到 jquery 实例中,然后变为未定义:另一个 jquery 加载在前一个之上。

如果使用 require.js,那么:

  • 不要手动加载 jquery ,通过 require.js加载 jquery和自动完成脚本,
  • 要么不通过 require.js 加载 jquery

如果有疑问,<script>从生成的页面中提取标签,并使用 firebug 或 webkit 检查器检查 jquery 是否加载了两次。

django-autocomplete-light 不打算弄乱您的 jquery/javascript 策略。因此,它没有理由妨碍您 - 如果有,则意味着您的 javascript 加载策略有问题。

于 2013-01-30T09:50:33.650 回答