2010-06-16 63 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