屏幕截图:http://d.pr/i/A4Kv
这是我的对话框代码:
function popupbox(title,html,buttonTxt,buttonAction) {
var buttons = {};
if(buttonTxt != null) {
buttons[buttonTxt] = buttonAction;
}
buttons['Cancel'] = function() {
jQuery(this).dialog('destroy').remove();
};
var p = jQuery('<form class="dialoginnerbox">' + html + '</form>');
p.dialog({
autoOpen: false,
resizable: false,
modal: false,
width: 'auto',
height: 'auto',
maxHeight: 600,
maxWidth: 980,
title: title,
close: function(event, ui){
jQuery(this).dialog('destroy').remove();
},
buttons: buttons
});
p.dialog('open');
}
有什么想法吗?
----更新----
我将返回的html替换为一些虚拟文本并修复了它...所以使用放入弹出窗口的html的东西让它打开两次......
答案 0 :(得分:4)
格式错误的html和内联脚本标记会导致jquery ui对话框打开多个对话框。
答案 1 :(得分:1)
使用jQueryUI对话框;在某些情况下,jQuery可能会将有效的html视为格式错误的HTML。我说这个的原因是我ajax加载了我的对话框的html与有效的HTML和有效的HTML注释。我得到了双重对话框,直到我从ajax加载的html中删除了html注释。实施例...
content.htm
<div id="myDialogContent">Alert!</div><!-- Here is an innocent looking comment -->
dialog.js
$.get( '/content.htm', function( html ){
$( html ).dialog();
});
这会产生一个双重对话框。如果html以html注释开头或结尾,则会出现相同的对话框问题。唯一的方法是删除html注释或将html文本包装在另一个html标签中,如此...
dialog.js
$.get( '/content.htm', function( html ){
$( '<div>'+html+'</div>' ).dialog();
});
这会产生一个对话框。
答案 2 :(得分:1)
function display_dialog(){if($('。dialog_wrapper')。length){ 返回; }
$('<div class="dialog_wrapper"</div>').dialog({ autoOpen: true, modal: true,
答案 3 :(得分:0)
此问题的解决方法是使用计数器:
var count = 0;
var $dialog = $('<div></div>') .dialog({ ...
autoOpen: false,
modal: true,
height: 625,
width: 500,
title: pagetitle
...
});
if (count > 0) {
$dialog.dialog("destroy").remove();
count = 0;
}
$dialog.dialog('open');
count++;
为我工作...对于对话问题,但我在服务器上收到多个请求... 类似的东西:当我第一次点击链接时,它会将信息发送到服务器。当我第二次点击(没有刷新浏览器)时,它会发送两次相同的信息。当我第三次点击时,会向服务器发送三个请求,依此类推......
答案 4 :(得分:0)
如果您将html包装在单个标签中,它可能会将其清理干净。 在html中包含div可能会导致每个对话框,除非上面有一层:
这对我不起作用:
<hr /> blah blah blah
<h3>blahblahtitle</h3>
<div id=somestufffirst>here's the stuff</div>
<div id=someotherstuff>here's some more stuff</div>
但是这样做了:
<div>
<hr /> blah blah blah
<h3>blahblahtitle</h3>
<div id=somestufffirst>here's the stuff</div>
<div id=someotherstuff>here's some more stuff</div>
</div>