2013-04-17 81 views
1

我得到一個奇怪的JS類型錯誤:怪異的JavaScript類型錯誤「不是一個函數」

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的動態表單集插件: http://code.google.com/p/django-dynamic-formset/

那麼可能是什麼問題就在這裏?

如果需要,我會很樂意提供更多信息。謝謝。

UPDATE

(含formset())Django的inlines.js真不是裝,由於對被重寫它的媒體屬性InlineModelAdmin凌亂的猴補丁。感謝您的評論和答覆。

+5

也許這個腳本放在加載formset插件的腳本之前。 – JJJ

+0

但是爲什麼它會指向'added'選項所在的行號? – skndstry

+1

註釋掉對象中的行並查看其中哪一個觸發了錯誤。 – epascarello

回答

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 
     ... 
    })); 
}); 

現在你幾乎可以肯定它是在加載插件時執行的。

+0

感謝您的回答。我解決了這個問題,看到上面的更新形成更多信息。 – skndstry

相關問題