我有一个模块,当用户点击链接时,我在一个对话框中加载一个新表单,该对话框有一个启用了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不起作用。
希望有人能得到答案......提前致谢。
答案 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/
答案 2 :(得分:0)
请检查$
是否替换为jQuery
,也许是此帮助。