4

我正在尝试将内联 jQuery 添加到 Drupal 中的一篇文章中。我正在使用以下代码:

<?php 
// add inline javascript
drupal_add_js('
$(document).ready(function() {
   $("input[type='submit']").click(function(){
      alert("test");
    });
 });
 ', 'inline');
?>

上面的代码失败并500在页面上产生错误。
谁能告诉我格式化上述代码的正确方法是什么。
我在为 Drupal 编写 jQuery 和 Javascript 方面是全新的。

4

3 回答 3

2

您可以通过以下方式将内联 javascript/jQuery 代码添加到静态内容中...当您即将创建静态页面时(内容管理->创建内容->页面)

  1. 选择输入格式为PHP 代码
  2. 在页面正文中,使用您的内联 js/jQuery 代码粘贴 PHP 代码drupal_add_js('Your JS code here', 'inline');

示例:(这将粘贴在页面的正文中)

<?php echo 'test';
  drupal_add_js('alert("Hello!")', 'inline');
?>
于 2013-07-16T05:59:44.767 回答
1

如 Drupal API 中所述,drupal_add_js() 可用于将 javascript 文件添加到您的代码或添加内联 javascript/jQuery。虽然您可以创建一个 js 文件,但这只是为了您的利益 - 将您的 jQuery 保存在一个文件中,而不是与您的模块代码混合(这可能会更混乱)。

为了测试 javascript 是否正常工作,我会做一些类似于 Ayyappan 建议的事情:

drupal_add_js($(document).ready(function() {
  alert("Hello!");
});

这可以添加到模块中的任何页面,并且应该在打开该页面后立即弹出。如果这不起作用,可能尝试清除缓存。

就您实际想要运行的代码而言,当您单击提交按钮 (?) 时,您似乎正试图显示一个警告框。提交按钮通常是表单的一部分,为了让 jQuery 在 drupal 表单中工作,您必须使用以下方法将 jQuery 直接附加到表单:

$form['#attached']['js'] = 

您将不得不对如何将内联 javascript 添加到表单进行一些研究。您也许可以只使用 drupal_add_js(),或者它可能是别的东西。您绝对可以使用 drupal_add_js() 以这种方式将 js 文件附加到表单。它看起来像这样:

$form['#attached']['js'] = array(drupal_get_path('module', 'my_module') . '/my_module.js');
于 2013-07-16T14:40:43.017 回答
1

最好在template_preprocess_page函数中执行此操作。对于自定义 mymodule,它可能如下所示:

function mymodule_preprocess_page(&$vars, $hook) {
    if('checkout' === arg(0)) {
        // Add a JS as a file.
        drupal_add_js(path_to_theme().'/js/jquery.mask.min.js');
        // Add a JS as an inline code.
        drupal_add_js('jQuery(document).ready(function() { jQuery("#edit-customer-profile-shipping-field-phone-und-0-value").mask("0 (000) 000-0000", {placeholder: "\8 (___)___-____"});
  })', 'inline');

    }

    $vars['scripts'] = drupal_get_js();
}

请注意drupal_add_js() 函数的“内联”选项。

于 2019-09-03T04:59:56.933 回答