Javascript jQueryUI对话框只工作一次
我有一个jQueryUI对话框,可以在其中打开另一个页面。单击“取消”并再次尝试单击后,它不会打开。我在网上搜索了一下,找到了一个答案,上面说我只需初始化对话框一次,当用户点击按钮时,只需调用open即可。我尝试将初始化代码移动到页面加载部分,并且只对按钮执行对话框(“打开”),但仍然存在与以前相同的问题。如何设置对话框以便取消并再次打开Javascript jQueryUI对话框只工作一次,javascript,jquery,jquery-ui,dialog,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Dialog,Jquery Ui Dialog,我有一个jQueryUI对话框,可以在其中打开另一个页面。单击“取消”并再次尝试单击后,它不会打开。我在网上搜索了一下,找到了一个答案,上面说我只需初始化对话框一次,当用户点击按钮时,只需调用open即可。我尝试将初始化代码移动到页面加载部分,并且只对按钮执行对话框(“打开”),但仍然存在与以前相同的问题。如何设置对话框以便取消并再次打开 scanDialog.load("url.html").dialog('open'); 初始化代码: var scanDialog = $( "#dialo
scanDialog.load("url.html").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');
加载代码:
scanDialog.load("url.html").dialog('open');
也许这不是一个正确的答案,但几个月前我也遇到了类似的问题,这是因为“模态:真实”属性。我必须删除modal属性才能使按钮正常工作。我认为这是jquery中的一个bug 尝试从DOM中销毁对话框
scanDialog.load("url.html").dialog('open');
scanDialog.load("url.html").dialog("destroy");
为了不丢失div id,可以将对话框id附加到其父DOM名称中
scanDialog.load("url.html").dialog('open');
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
}
}
});
那么
scanDialog.load("url.html").dialog('open');
$("#" + Diag).dialog('open');
这似乎是一个不必要的麻烦问题。使用“自动对焦”只能工作一次。有些修复在IE中有效,但在Chrome中无效。因此,要解决这个问题,我需要几个步骤,其中一部分是合并上面提到的“.dialog('destroy')”。我正在将焦点添加到对话框弹出窗口上的“是”按钮
scanDialog.load("url.html").dialog('open');
首先,我添加了一个带有focus()调用的open函数。在我们的系统上,它需要“setTimeout”包装器:
scanDialog.load("url.html").dialog('open');
open: function()
{
setTimeout(function() {
$('#yesDialog').focus();
}, 100);
},
添加“id”:
scanDialog.load("url.html").dialog('open');
}, id: 'yesDialog'
关键的一步是将对话框“关闭”更改为“销毁”:
scanDialog.load("url.html").dialog('open');
因此,来自:
scanDialog.load("url.html").dialog('open');
$(this).dialog('close');
致:
scanDialog.load("url.html").dialog('open');
取出我们的特定绒毛,将其全部放在一起,看起来如下所示:
scanDialog.load("url.html").dialog('open');
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');
}
}]
});
var prompt='你确定吗?';
$(“”+prompt+“”)。对话框({
scanDialog.load("url.html").dialog('open');
自动打开:对,
可拖动:错误,
莫代尔:是的,
标题:“保存数据”,
dialogClass:“禁止关闭”,
打开:函数(){
setTimeout(函数(){
$('yesDialog').focus();
}, 100);
},
按钮:[{
文本:'是',
单击:函数(){
$(this.dialog('destroy');
//…我们的绒毛
},id:‘yesDialog’
}, {
文本:“否”,
单击:函数(){
$(this.dialog('destroy');
}
}]
});
加载新页面时是否正在替换#对话框
元素?这是否会出于任何原因调用\u destroy()
?你也可能会因为这种方式而丢失你的id。我从来没有遇到过多次重复使用对话框的问题。我看到你在打开之前加载了一个url。。。您的url是否可能包含id等于对话框id的其他元素,从而导致冲突?