【问题标题】:Drupal 7 and inline JqueryDrupal 7 和内联 Jquery
【发布时间】:2013-07-15 21:09:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript jquery drupal drupal-7


    【解决方案1】:

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

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

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

    <?php echo 'test';
      drupal_add_js('alert("Hello!")', 'inline');
    ?>
    

    【讨论】:

      【解决方案2】:

      drupal_add_js(),如 Drupal API 中所述,可用于将 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');
      

      【讨论】:

        【解决方案3】:

        最好在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()函数的'inline'选项。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多