0

我有一个模块,当用户单击链接时,我会在对话框中加载一个新表单,该表单具有启用 Ajax 的提交按钮。在我的对话框中,我不希望显示整个 drupal 页眉和页脚等。我所展示的只是那个新表格的内容。所以我的表单是通过 json 输出的,如下所示:

$json['html'] = drupal_render(drupal_get_form('my_form'));
drupal_json_output($json); 

像我想要的那样工作,并且只显示表单内容。但是,当这种情况发生时,该表单中启用 ajax 的提交按钮不会通过 ajax 提交。相反,它像普通按钮一样提交并将我带到另一个页面上的相同表单。

如果我有正常输出和显示的表单,带有页眉和页脚,如下所示:

$output = drupal_get_form('my_form');
return $output;

一切正常,我的提交按钮是“启用 ajax”的。

我想,也许是因为我正在加载新内容,而行为并没有附加到这些新的表单内容上。所以在我的 js 文件中,我也这样做了:

$('a.my_link', context).click(function() {
//processing done here
$('#my_modal_dialog').html(jsondata['html']);
}, "json");
Drupal.attachBehaviors($('#my_modal_dialog'));

那个小小的补充,也没有解决问题。我想知道为什么,如果表单正常输出,按钮作为ajax按钮工作,而当只显示表单内容时,ajax不起作用。

希望有人能得到答案...在此先感谢。

4

3 回答 3

1

我已经解决了问题,可以在以下链接中找到它:drupal.org/node/1517414

于 2012-04-11T07:10:05.387 回答
0

我认为问题确实在于 javascript 没有应用于新内容,因为它在页面加载后运行一次。尝试使用以下live()方法:

$('a.my_link', context).live("click", function() {
  ...
});

请注意,从 jQuery 1.7 开始,live() 方法似乎已被弃用:http: //api.jquery.com/live/

它似乎已被ondelegate方法取代。

于 2012-04-06T08:38:23.400 回答
0

请检查是否$替换为jQuery,也许这有帮助。

于 2012-04-06T11:43:56.173 回答