Ajax按钮无法在新加载的表单内容中运行 - Drupal 7

时间:2012-04-06 08:17:44

标签: jquery ajax drupal

我有一个模块,当用户点击链接时,我在一个对话框中加载一个新表单,该对话框有一个启用了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-enabled'。

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

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

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

希望有人能得到答案......提前致谢。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

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

似乎已被方法ondelegate取代。

答案 2 :(得分:0)

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