Javascript jQueryUI对话框只工作一次

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

我有一个jQueryUI对话框,可以在其中打开另一个页面。单击“取消”并再次尝试单击后,它不会打开。我在网上搜索了一下,找到了一个答案,上面说我只需初始化对话框一次,当用户点击按钮时,只需调用open即可。我尝试将初始化代码移动到页面加载部分,并且只对按钮执行对话框(“打开”),但仍然存在与以前相同的问题。如何设置对话框以便取消并再次打开

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的其他元素,从而导致冲突?