![](/img/trans.png)
[英]When using prepOverlay, how can multiple overlays be prevented from opening?
[英]How to make prepOverlay works with createObject?
在模板中,我想在弹出窗口中打开一个添加表单。
所以,我有一个链接:
<p class="visualClear">
<a href="createObject?type_name=Contact" class="link-overlay" i18n:translate="">Add a contact</a>
</p>
和一个制作prepOverlay的javascript:
(function($) {
jQuery(function($){
// popin de plone
$('a.link-overlay').prepOverlay({
subtype: 'ajax',
filter: common_content_filter,
formselector: 'form[name=edit_form]',
noform: 'reload',
closeselector: '[name="form.button.cancel"]'
});
});
})(jQuery);
问题是,当我点击链接时,我遇到了一个javascript错误: TypeError: $(...).multiSelect is not a function
,弹出窗体根本没有显示。
这个错误是根据这篇文章https://github.com/ehynds/jquery-ui-multiselect-widget/issues/267得出的,因为jquery被加载了两次。
这可能是原因,因为当我点击链接时,我在http://localhost:8080/Plone/guide-paroissial/milieux-sociaux/acf-action-catholique-des-femmes/createObject?type_name=Contact&ajax_load=1398763930910
上获得了GET http://localhost:8080/Plone/guide-paroissial/milieux-sociaux/acf-action-catholique-des-femmes/createObject?type_name=Contact&ajax_load=1398763930910
然后重定向到: http://localhost:8080/Plone/guide-paroissial/milieux-sociaux/acf-action-catholique-des-femmes/portal_factory/Contact/contact.2014-04-29.9309424841/edit
那么,我怎么能让这个工作?
好吧,我在一个vanilla plone网站上测试了你的代码。 我刚刚更改了prepoverlay的选择器以匹配“添加菜单”并删除了第二个jquery范围定义。
jQuery(function($){
// popin de plone
$('.actionMenuContent a').prepOverlay({
subtype: 'ajax',
filter: common_content_filter,
formselector: 'form[name=edit_form]',
noform: 'reload',
closeselector: '[name="form.button.cancel"]'
});
});
工作没有任何问题。
否则我也会得到一个TypeError
。
问题是keywordmultiselect.js
未加载到模板中。
要加载它:
$.ajax({
url: 'widgets/js/keywordmultiselect.js',
dataType: "script"
});
完整代码:
jQuery(function($){
// popin de plone
$(document).ready(function(){
$.ajax({
url: 'widgets/js/keywordmultiselect.js',
dataType: "script"
});
$('a.link-overlay').prepOverlay({
subtype: 'ajax',
filter: common_content_filter,
formselector: 'form[name=edit_form]',
noform: function(el) {
if ($.plonepopups.noformerrorshow(el, 'close') === 'close'){
$('input[name="form.button.Submit"]').click();
return 'close';
}
},
closeselector: '[name="form.button.cancel"]'
});
});
});
感谢@Mathias和@SteveM指点我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.