1

我得到一个奇怪的 JS TypeError:

TypeError: $(...).formset is not a function
added: function(row) {

现在,JS 看起来像这样:

$('#richtextcontent_set-group .inline-related').formset({
  prefix: "richtextcontent_set",
  addText: "Text hinzufügen",
  formCssClass: "dynamic-richtextcontent_set",
  deleteCssClass: "inline-deletelink",
  deleteText: "Entfernen",
  emptyCssClass: "empty-form",
  removed: updateInlineLabel,
  added: function(row) {
    initPrepopulatedFields(row);
    reinitDateTimeShortCuts();
    updateSelectFilter();
    updateInlineLabel(row);
  }
}); 

真的不能.formset()叫。如果我执行

$('#richtextcontent_set-group .inline-related').formset({})

在控制台中,它不会返回任何错误。

并且该added:选项显然具有功能。

我正在使用 django-dynamic-formset 插件: http ://code.google.com/p/django-dynamic-formset/

那么这里可能是什么问题呢?

如有必要,我很乐意提供更多信息。谢谢。

更新

django inlines.js(包含formset())实际上没有加载,因为 InlineModelAdmin 上有一个凌乱的猴子补丁覆盖了它的 media 属性。感谢您的评论和回答。

4

1 回答 1

2

尝试在有问题的代码之前记录输出。

var formset = $('#richtextcontent_set-group .inline-related').formset;

// have a look at formset
console.log(formset);

formset({
    ...
    configuration properties
    ...
});

如果undefined返回到控制台,则在您调用它时未加载插件。在这种情况下,最好在 dom 准备好时执行您的代码。这个例子将它包装在里面$(function() { ... })来做到这一点。

$(function () {
    $('#richtextcontent_set-group .inline-related').formset({
        ...
        configuration properties
        ...
    }));
}); 

现在你几乎可以确定它是在插件加载时执行的。

于 2013-04-17T20:15:37.233 回答