【问题标题】: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 代码添加到静态内容中...
当您要创建静态页面时(内容管理->创建内容->页面)
- 选择输入格式为PHP代码
- 在页面正文中,使用
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'选项。