首页 > 解决方案 > 如何清除写入 window.open 的 kylefox jQuery-modal?

问题描述

我使用 kylefox / jquery-modal 在我的 CRUD 应用程序中执行多项任务。

显示一个模式,并通过右键单击几个不同字段之一加载其内容。在第一次右键单击模态构建并按其应有的方式显示。关闭它是通过模式窗口上的“关闭”按钮完成的。

在同一个会话期间,如果另一个右键单击用于启动另一个模式,甚至是同一个模式,它会出现,但它在窗口上有两组信息。第三次点击无论从哪里再次显示,但这次将有三组信息。这是相同信息的三次重复,而不是信息的三个不同迭代。并且每个模态显示在顶部提供正确的信息,但将其复制到模态已启动的次数。

我不得不认为这是因为模态在使用之间没有被清除。因此,基于另一个 SO 解决方案,我尝试使用“e.preventDefault()”函数,如您所见,我已经在我的函数中尝试了它。但我没有迹象表明它对我的重复有任何影响。这个小提琴(来自;无法清除 jquery modal popup 上的先前文本)似乎也回答了它;http://jsfiddle.net/hg9NJ/8但我不明白如何将其应用于我的情况。

我很困惑,我希望有人能指出我的解决方案。

function getCallHistory() {
    
    //Get the td under tr and invoke on contextmenu
    $('tr').on('contextmenu', 'td', function(e) { 
        
        //e.preventDefault(); //Prevent defaults'
        
        // Get the call and clean it up, that was right clicked
        var idparm = $(this).attr('id');
        var arparm = idparm.split(":");
        var id     = arparm[1];
            id     = id.replace(/\s+/g, '');
        var call   = $(this).html();            //alert(call);
            call   = call.replace(/\s+/g, '');  // remove spaces 
        
            if (call == '' ) {alert("no call");}
        
        var vals = [call].map((item) => item.split(/\W+/,1));
            call = vals[0];
            
            //e.preventDefault(); //Prevent defaults'
        
        var thisdomain = getDomain();  //alert("@124 in NetManager.js thisdomain= "+thisdomain); 
        // By using _blank it allows multiple popups
        var popupWindow = window.open("x", call,  strWindowFeatures);
        
        //e.preventDefault(); //Prevent defaults'

        $.ajax({
            type: "GET",
            url: "getCallHistory.php",  
            data: {call : call, id : id},
            success: function(html) {
                popupWindow.document.write(html);
            },
            error: function() {
                alert('Last Query Failed, try again.');
            }
        });
    });
}

标签: jquery

解决方案


推荐阅读