![](/img/trans.png)
[英]jQuery UI radio / controlgroup (in a dialog) works only once
[英]JQuery UI Dialog box only works once
我有一个JQuery UI对话框,它在其中打开了另一个页面。 单击取消并尝试再次单击后,它不会打开。 我在线搜索,发现一个答案,说我只需要初始化一次对话框,并且在用户单击按钮时调用open。 我尝试将初始化代码移动到页面加载部分,并且仅对按钮执行dialog(“ open”),但是仍然存在与以前相同的问题。 如何设置对话框,以便可以取消并再次打开它?
初始化代码:
var scanDialog = $( "#dialog" ).dialog({
height:600,
width:800,
modal: true,
autoOpen:false,
buttons: {
"Scan": function() {
//scanning code
},
Cancel: function() {
scanDialog.load("url.html").dialog("close");
}
}
});
加载代码:
scanDialog.load("url.html").dialog('open');
尝试从DOM中销毁对话框
scanDialog.load("url.html").dialog("destroy");
为了不松散div ID,您可以将对话框ID附加到其父DOM名称。
var DialogParent = $(this).parents("div:eq(0)");
var Diag = myParent.attr('id') + 'Diag';
var scanDialog = $( "#" + Diag ).dialog({
height:600,
width:800,
modal: true,
autoOpen:false,
buttons: {
"Scan": function() {
//scanning code
},
Cancel: function() {
scanDialog.load("url.html").dialog("destroy");// Destroy, not close
}
}
});
然后,
$("#" + Diag).dialog('open');
也许这不是一个正确的答案,但是几个月前我也遇到了类似的问题,这是因为“ modal:true”属性。 我必须删除modal属性才能使按钮起作用。 我认为这是jquery中的错误。
这似乎是一个不必要的讨厌问题。 使用“自动对焦”只能使用一次。 某些修复程序在IE中有效,但在Chrome中不起作用。 因此,要解决此问题,我需要几个步骤,其中一部分是合并上述“ .dialog('destroy')”。 我将焦点添加到对话框弹出窗口的“是”按钮上。
首先,我添加了一个带有focus()调用的开放函数。 在我们的系统上,它需要“ setTimeout”包装器:
open: function()
{
setTimeout(function() {
$('#yesDialog').focus();
}, 100);
},
添加“ id”:
}, id: 'yesDialog'
关键的关键步骤是将对话框“关闭”更改为“破坏”对话框:
来自:
$(this).dialog('close');
至:
$(this).dialog('destroy');
取出我们特定的绒毛,将它们放在一起看起来像这样:
var prompt = 'Are you sure?';
$('<p>'+prompt+'</p>').dialog({
autoOpen: true,
draggable: false,
modal: true,
title: 'Save Data',
dialogClass: 'no-close',
open: function() {
setTimeout(function() {
$('#yesDialog').focus();
}, 100);
},
buttons: [{
text: 'Yes',
click: function() {
$(this).dialog('destroy');
//...our fluff
}, id: 'yesDialog'
}, {
text: 'No',
click: function() {
$(this).dialog('destroy');
}
}]
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.