我正在尝试将内联jQuery添加到Drupal中的一篇文章中。我使用以下代码:
<?php
// add inline javascript
drupal_add_js('
$(document).ready(function() {
$("input[type='submit']").click(function(){
alert("test");
});
});
', 'inline');
?>
上述代码失败并在页面上产生500
错误
任何人都可以让我了解格式化上述代码的正确方法是什么
我是为Drupal编写jQuery和Javascript的新手。
答案 0 :(得分:2)
您可以通过以下方式将内联javascript / jQuery代码添加到静态内容中...... 当您即将创建静态页面(内容管理 - >创建内容 - >页面)
时drupal_add_js('Your JS code here', 'inline');
示例:(这将粘贴在页面正文中)
<?php echo 'test';
drupal_add_js('alert("Hello!")', 'inline');
?>
答案 1 :(得分:1)
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');
答案 2 :(得分: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()函数的'inline'选项。
答案 3 :(得分:-1)
通常在drupal中使用drupal_add_js()
添加js文件,而不是内联代码。
您的代码根本没有添加或者没有在$(document).ready()
中调用,因为已经在同一事件上执行了一些其他jQuery文件(Drupal在核心中使用了大量jQuery文件,并添加到所有页面)
创建一个js文件,使用drupal_add_js()
添加它,你的问题应该解决