django-autocomplete-light给出了javascript错误

时间:2013-01-29 14:10:43

标签: javascript django django-autocomplete-light

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

我在网站上有一个地方,它可以毫无障碍地工作,但还有另一个地方,它不起作用,实际上它是部分工作。

自动填充选项渲染得很好,但当用户点击其中一个时,它会抛出:

  

未捕获TypeError:对象[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>

1 个答案:

答案 0 :(得分:4)

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

如果使用require.js,则:

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

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

django-autocomplete-light并不打算搞乱你的jquery / javascript策略。因此,它没有理由妨碍你 - 如果它确实那么它意味着你的javascript加载策略中出现了问题。