现在我有一个Drupal站点,在那里我集成了一个自定义前端接口,用于创建特定类型的节点。此自定义"接口"区域嵌入在节点创建页面的顶部。
节点的CCK字段使用Fieldgroup模块分组在一起,Fieldgroup模块将它们封装到中。当用户按下按钮时,我使用以下代码将Fieldgroup拉入JQuery对话框:
var options = {
dialogClass: 'customDialog',
autoOpen: false,
draggable: false,
modal: true,
resizable: false,
height: 'auto',
width: 'auto',
title: 'Configure Options',
show: 'fade',
hide: 'fade',
buttons: {
'Update': function(){
$(this).dialog('close');
}
}
};
// open windows
$("#inputButton").click(function() {
var dlg = $('.group_input').dialog(options);
dlg.css('min-width', '500px').css('max-height', '300px');
dlg.dialog('open');
});
一切正常,并在对话框中加载;但是,当用户按下"更新"按钮关闭对话框时,CCK字段不会用新值更新。
如果我在对话框中加载一个字段,也会发生同样的情况,所以我知道这不是Fieldgroup模块的问题。我已经搜索了好几天试图解决这个问题,似乎没有其他人遇到这个问题。任何意见都将不胜感激。
编辑:我有一个解决方案,一旦8小时限制通过,我就会发布:(
好吧,所以我终于想通了。对于任何有兴趣将节点的CCK字段加载到JQuery对话框中的人来说,只有当您将对话框的元素追加回表单时,它才会更新表单值。这似乎是因为JQuery对话框在关闭时实际上会破坏加载的内容。
正确的实现如下:
var options = {
dialogClass: 'customDialog',
autoOpen: false,
draggable: false,
modal: true,
resizable: false,
height: 'auto',
width: 'auto',
title: 'Configure Options',
show: 'fade',
hide: 'fade',
buttons: {
'Update': function(){
$(this).dialog('close');
}
},
**close: function(event, ui){
$('#the-form-name').append($(this));
}**
};
// open windows
$("#inputButton").click(function() {
var dlg = $('.group_input').dialog(options);
dlg.css('min-width', '500px').css('max-height', '300px');
dlg.dialog('open');
});
我希望这能帮助陷入同样问题的人!