【问题标题】:Drupal Form can't access javascript function (errors "not a function")Drupal Form 无法访问 javascript 函数(错误“不是函数”)
【发布时间】:2010-06-16 16:04:23
【问题描述】:

使用带有 lightbox2 的 drupal 打开一个表单。此表单来自自定义模块。

模块有一个设置:'onsubmit' => 'return form_submission(this);'这似乎工作正常。

我已经在 theme.info 文件中包含了 functions.js 并且它正在显示,我可以打开该文件并查看函数。

由于某种原因,当我提交表单时,我不断收到“form_submission not a function”。

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

}

【问题讨论】:

    标签: javascript jquery drupal lightbox2


    【解决方案1】:

    您的 form_submission 函数是其内部的匿名函数(即文档就绪函数)的本地函数。

    您需要在全局范围内声明函数,在文档准备好之外。你至少需要声明变量form_submission。然后,您就可以将函数附加到您希望的任何位置。

    【讨论】:

    • 欢迎来到 SO,但您似乎回答了 2010 年的一个问题:/
    • 大声笑,得到正确回答总是好的。奇怪的是,如果它太老了,它会出现在“未回答”问题的第一页。
    【解决方案2】:

    form_submission 必须是一个已定义的函数。

    function form_submission(data) {
       // action code
    }
    

    也可以试试

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

    【讨论】:

    • 谢谢——但还有其他事情正在发生。我可以在表单正上方的脚本标签之间添加函数,但仍然没有运气。我尝试了你提到的两种函数声明技术
    • 如果您在 if(Drupal.jsEnabled) 之后立即发出警报,它会出现吗?这个条件是真的吗?
    【解决方案3】:

    这并不是一个完美的答案,但我从 document.ready jquery 包装器中删除了该函数,并且它接受了它。

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2011-06-20
      相关资源
      最近更新 更多