0

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

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

最佳情况:

  • 用户单击折叠的字段集。
  • Fieldset 加载额外的信息。
  • 字段集展开。

提前谢谢。

编辑:

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

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

我认为您应该可以添加以下行:

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

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

EDIT2:试过这个:

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

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

4

2 回答 2

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")
  })
})
于 2014-02-13T09:26:30.897 回答
0

试试这个代码:

  '#attributes' => array("onclick" => "testCapa()"),
于 2012-08-21T11:13:57.690 回答