formset()不是函数,使用jquery.formset.js时出现typeerror

formset()不是函数,使用jquery.formset.js时出现typeerror,jquery,django,django-forms,typeerror,Jquery,Django,Django Forms,Typeerror,我正在使用jquery.formset.js尝试向我的表单集中动态添加和删除行 我在Chrome开发者工具中遇到一个错误: Uncaught TypeError: $(...).formset is not a function(…) 我不明白为什么。。。下面是我的模板的样子,在底部定义了脚本,并链接到jquery.formset.js {% extends 'project/base.html' %} {% block title %}...{% endblock %} {% load s

我正在使用jquery.formset.js尝试向我的表单集中动态添加和删除行

我在Chrome开发者工具中遇到一个错误:

Uncaught TypeError: $(...).formset is not a function(…)
我不明白为什么。。。下面是我的模板的样子,在底部定义了脚本,并链接到jquery.formset.js

{% extends 'project/base.html' %}
{% block title %}...{% endblock %}
{% load staticfiles %}

{% block content %}

<form id="time-form" method="POST" action="" class="dynamic-form" enctype="multipart/form-data">{% csrf_token %}
    <div style="overflow-x:auto; padding-bottom:0;">
        <table id="timesheet" class="tables">
            <tbody>
                <tr class="table-header">
                    <th>Date</th>
                    <th colspan="2">Description</th>
                </tr>
                    {{ time_formset.management_form }}
                    {% for form in time_formset %}
                        <tr class="formset_row">
                            {% for field in form.visible_fields %}
                                <td>
                                    {# Include the hidden fields in the form #}
                                    {% if forloop.first %}
                                        {% for hidden in form.hidden_fields %}
                                            {{ hidden }}
                                        {% endfor %}
                                    {% endif %}
                                    {{ field.errors.as_ul }}
                                    {{ field }}
                                </td>
                                {% if forloop.last %}
                                    {% if form.instance.pk %}<td>{{ form.DELETE }}</td>{% endif %}
                                {% endif %}
                            {% endfor %}
                        </tr>
                    {% endfor %}
                </tbody>
        </table>
    </div>
    </br>
    <input type = "submit" id = "save" value = "Save">
</form>
<script type="text/javascript" src='/media/jquery.formset.js'></script>
<script type="text/javascript" src="{% static 'app/jquery.js' %}"></script>
<script src="{% static 'app2/jquery-ui/external/jquery/jquery.js' %}"></script>
<script src="{% static 'app2/jquery-ui/jquery-ui.js' %}"></script>
...
<script>
$(function() {

    //ERROR RAISED HERE//

    $('#time-form div table#timesheet tbody tr.formset_row').formset({
        prefix: '{{ time_formset.prefix }}'
    });

});
</script>

帮助???

尝试在表单集插件之前加载jQuery

<script type="text/javascript" src="{% static 'app/jquery.js' %}"></script>
<script type="text/javascript" src='/media/jquery.formset.js'></script>


使用
/media/
插件看起来很不寻常,我希望看到的静态标签与
app/jquery.js

jquery包含的标签相同?如果包括正确的版本,它是否可以与formset一起使用?您确认路径了吗?@DaniP Yes包含jQuery,我将在上面更新。它应该很好用。路径我在文件中放了一个警报,确认他们链接了okaySimple!非常感谢。是的,我在教程的自述中也发现了这一点,它告诉我把它放在mediaroot中。。。。不确定自述文件中的建议为何过时-在1.3之前的早期Django版本中,人们将静态文件和用户上传的文件放在
MEDIA\u ROOT
中。您应该能够将
jquery.formset.js
移动到静态目录并使用静态标记。只要脚本标记可以加载文件,它位于何处都无关紧要。如果它位于静态或介质中,会有区别吗?还是公正还是一致?(出于这个原因,我更希望它出现在那里)插件本身并不在意——只要脚本标签加载文件就可以了。由于它是一个静态文件(它是应用程序的一部分,而不是用户上传的内容),因此它与其他静态文件保持一致。
<script type="text/javascript" src="{% static 'app/jquery.js' %}"></script>
<script type="text/javascript" src='/media/jquery.formset.js'></script>