2010-06-16 64 views
2

使用與lightbox2的Drupal打開表單。此表單來自自定義模塊。這個模塊有一個設置:'onsubmit'=>'return form_submission(this);'並且似乎工作正常。Drupal表單無法訪問javascript函數(錯誤「不是函數」)

我已經在theme.info文件中包含了functions.js,它顯示出來了,我可以打開該文件並查看該函數。

由於某種原因,當我提交表單時,我不斷收到「form_submission不是函數」。

if(Drupal.jsEnabled) 
{ 
$(document).ready(function() { 
    // Call back function for AJAX call 

     var form_submission = function(responseText) { 
      alert (responseText); 
     } 

     // preventing entire page from reloading 
     return false; 
    }); 

} 

回答

0

form_submission必須是一個已定義的函數。

function form_submission(data) { 
    // action code 
} 

或也嘗試

var form_submission = new function(data) { 
    // action code 
} 
+0

謝謝 - 但其他事情正在發生。我可以在窗體上方的腳本標記之間添加函數,但仍然沒有運氣。我試過你提到的兩種函數聲明技巧 – eriksays 2010-06-16 16:41:42

+0

如果你在if(Drupal.jsEnabled)後面加上一個提示,它會出現嗎?這種情況是否屬實? – Kevin 2010-06-16 17:20:07

0

不,這是一個完美的答案,但我從jQuery的的document.ready包裝中取出的功能,它在它拾起。

1

您的form_submission函數對其內部的匿名函數(即文檔就緒函數)是本地的。

您需要在準備好的文檔之外的全局範圍內聲明函數。你至少需要聲明變量form_submission。您隨後可以將該功能附加到任何地方。

+0

歡迎來到SO,但看起來你回答了2010年的一個問題:/ – hugomg 2011-05-25 17:16:30

+0

大聲笑,以及總是很好地得到正確答案的東西。奇怪的是,這是在「未回答」的問題的第一頁,如果它是如此之久。 – Leon 2011-05-26 09:03:36