【问题标题】:How to use onclick event with drupal fieldset?如何将 onclick 事件与 drupal 字段集一起使用?
【发布时间】:2014-02-13 17:26:30
【问题描述】:

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

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

最佳情况:

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

提前致谢。

编辑:

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

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

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

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

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

编辑2: 试过这个:

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

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

【问题讨论】:

  • 如果有人有其他方法制作这样的列表,请随时发表评论。

标签: php drupal onclick fieldset


【解决方案1】:

试试这个代码:

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

【讨论】:

  • link - 这是可用密钥的完整列表。它来自 D7,但也有其他版本的链接。
  • 尝试使用:'#attributes' => array("onclick" => "testCapa()"),但 testCapa() 没有被调用。
  • 如果您在浏览器中查看生成的 HTML - 您是否看到了 onclick="testCapa()" ?如果是,那么 testCapa 本身就有问题。
  • 我的 testCapa 函数只是一个测试函数 atm,带有 drupal_set_message("message") 或 die("message")。当我查看生成的 html 时,我看到了 onclick="testCapa()"。
  • drupal_set_message - 它是 drupal 的服务器端功能。同时 onclick="testCapa()" 用于客户端。您现在只需要编写一些 JS 函数,它将使用 ajax 调用服务器并为您的字段集加载数据。
【解决方案2】:

我正在回复这个,所以我有自己的参考(因为我在上面浪费了一些美好的时光)。 #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")
  })
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多