如何在drupal fieldset中使用onclick事件?

时间:2012-08-20 13:25:54

标签: php drupal onclick fieldset

在drupal中,我生成了一个列表,其中每个项目都是可折叠的字段集,可以包含额外的信息。

由于列表相当大,我希望避免在用户点击字段集之前加载额外的信息。

最佳案例:

  • 用户点击折叠的字段集。
  • Fieldset会加载额外信息。
  • Fieldset uncollapses。
提前谢谢。

编辑:

这是我当前代码的一部分:

$form[$service["name"]] = array(
    '#type' => 'fieldset',
    '#title' => t($titleBuilder),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
    '#tree' => TRUE,
);

我认为你应该能够添加这一行:

    '#onclick' => "testCapa()",

但这不起作用,浏览器加载空白页。

EDIT2: 试过这个:

    '#attributes' => array("onclick" => "testCapa()"),

而不是加载空白页面,我的块现在已加载。但是当我点击字段集时,不会调用testCapa()。

2 个答案:

答案 0 :(得分:0)

试试这段代码:

  '#attributes' => array("onclick" => "testCapa()"),

答案 1 :(得分:0)

我正在回答这个问题,所以我有自己的参考(因为我失去了一些美好的时光)。 #attributes中的单击不起作用,因为Drupal的collapse.js更改了DOM,用户实际点击了字段集图例中的A标记(而不是字段集本身)。

对于Drupal 6,我实现它的方式是这样的:

Drupal.toggleFieldsetOriginal = Drupal.toggleFieldset
Drupal.toggleFieldset = function(fieldset) {
  $(fieldset).trigger("beforeCollapse")
  Drupal.toggleFieldsetOriginal(fieldset)  
}

$(function() {
  $("fieldset.collapsible").bind("beforeCollapse", function(e) {
    if ($(this).hasClass("collapsed"))
      alert("Fieldset is closed and will be open")
    else 
      alert("Fieldset is open and will be closed")
  })
})