【问题标题】:Call a function in JS file from drupal从drupal调用JS文件中的函数
【发布时间】:2015-01-12 02:30:46
【问题描述】:

我在drupal中使用此代码开发的模块“myid”中包含了一个javascript:

function myid_init() {
    drupal_add_js(drupal_get_path("module", "myid") . "js/myid.js");   
}

这是我的 Javascript 文件“myid.js”:

function myid_js_start(){
    alert("hello world");
}

以下是创建调用警报功能的按钮的代码:

$form['add_button'] = array(
    '#type' => 'button',
    '#value' => 'Take a picture',
    '#attributes' => array('onclick' => 'myid_js_start()'),    
);

我不知道我哪里出错了。该按钮会显示,但不会触发任何警报功能。谁能帮我解决这个问题?

【问题讨论】:

    标签: javascript drupal drupal-7 drupal-modules


    【解决方案1】:

    如果您遵循了正确的 drupal 目录结构并且一切都在它应该在的位置,那么您可能将属性 [onclick] 设置为“myid_js_start()”。尝试这样做

    $form['add_button'] = array(
      '#type' => 'button',
      '#value' => 'Take a picture',
      '#attributes' => array('onclick' => 'myid_js_start'),    
    );
    

    也许这会解决它。

    我目前没有用于测试您的代码的 drupal 系统设置。这可能是别的东西,但值得一试。

    【讨论】:

    • 我尝试通过省略“()”来编辑我的代码,但仍然没有任何变化。每次单击按钮时页面都会刷新,并且没有出现警告对话框。
    • 好的,这就是你应该做的。首先查看您的 onclick 是否被调用。试试'#attributes' => array('onclick' => "alert('hello world'); return false;")
    • hello world 出现了,但我想在我的 Java 脚本文件中调用该函数。我的 Javascript 文件路径可能有问题。我说的对吗?
    • 我已经想通了,我只是返回false;在我的脚本函数中。无论如何,为什么我们必须在我的 Java 脚本函数中“返回 false”?有什么理由吗?
    • HTML 中的按钮默认提交表单。我想这可能是一个原因。
    【解决方案2】:

    使用#attach.js 文件附加到表单本身。

    $form['#attached']['js'] = array(
        drupal_add_js(drupal_get_path("module", "myid") . "js/myid.js"),
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 2018-08-14
      相关资源
      最近更新 更多