为什么我的弹出页面功能不起作用?

时间:2014-02-25 18:37:22

标签: php jquery

我有一个PHP日历应用程序,以表格形式显示时间表。每个单元格都是可选的,并在其后面有以下Jquery弹出代码:

document.getElementsByTagName('body')[0].appendChild(f);
if (roleID > 2)
{
    window.open("","popUpForm","height=550,width=1050,toolbar=0,menubar=0,location=100,status=no,scrollbars=1,resizable=1,right=300,top=100");
    $('.jobTime').submit();
}

工作正常,并在弹出窗口中显示一个名为newJobForm.php的表单。用户输入选定的时间...并提交。如果与尝试的计划发生冲突,则会关闭窗口弹出窗口,并重新打开表单并附带冲突信息:

else
{
    $userSTime = new DateTime($params[0]);
    $userSTime = date_format($userSTime,'m/d/Y h:i a');
    $userETime = new DateTime($params[1]);
    $userETime = date_format($userETime,'m/d/Y h:i a');     
    $_SESSION['jbNum'] = $params[2];
    $_SESSION['asset'] = $params[4];
    $_SESSION['userSTime'] = $userSTime;
    $_SESSION['userETime'] = $userETime;
    $_SESSION['userDesc'] = trim($params[3]);
    $_SESSION['conJbNum'] = $msg['JobNum'];
    $_SESSION['conSTime'] = date_format($msg['StartTime'], 'm/d/Y h:i a');
    $_SESSION['conETime'] = date_format($msg['EndTime'], 'm/d/Y h:i a');
    $_SESSION['dueDate'] = $params[5];
    $_SESSION['comment'] = $params[6];
    $_SESSION['destination'] = $params[7];
    $_SESSION['jStat'] = $params[8];
    $_SESSION['ujob'] = $params[9];


    if ($_SESSION['recurring'] == 'n')
    {
        echo '<script>window.open("../forms/newJobForm.php","popUpForm","height=550,width=900,status=yes, scrollbars=1, toolbar=no,menubar=no,location=no");</script>';
        windowClose();      
        exit;
    }

如果用户做出正确的更正,此部分可以正常工作。但是,如果用户发出另一个调度错误,表单将关闭并重新显示信息。此时close函数退出工作,原始父页面不刷新。父页面没有刷新我有点理解,但是关闭功能就是“关闭”。

function windowClose()
{
    echo "<script>window.close()</script>";
}
出了什么问题?我不能真正发布整个代码,因为有大约1000行代码,给予或采取...我怎样才能让它正常工作?

1 个答案:

答案 0 :(得分:1)

感谢@CBroe,我能够通过对我的应用程序进行以下修改来解决这个特殊问题。在我的文件中,我检查用户输入是否与我更改的现有条目发生冲突:

if ($_SESSION['recurring'] == 'n')
    {
        echo '<script>window.open("../forms/newJobForm.php","popUpForm","height=550,width=900,status=yes, scrollbars=1, toolbar=no,menubar=no,location=no");</script>';
        windowClose();      
        exit;
    }

为:

if ($_SESSION['recurring'] == 'n')
{
    echo "<meta http-equiv='refresh' content='0;URL=../forms/newJobForm.php' target = '_SELF'/>";       
    exit;
}

使用新冲突(如果存在冲突)信息简单刷​​新原始表单,或者允许用户提交或取消尝试的操作,无论他们尝试多少次。对于自己的形式,我添加了以下javascript,确保用户的操作刷新父页面:

window.onunload = refreshParent;
function refreshParent() 
{
    window.opener.location.href = window.opener.location.href;
}

创建初始弹出窗口的函数略微修改如下:

document.getElementsByTagName('body')[0].appendChild(f);
if (roleID > 2)
{
    popUpForm = window.open("","popUpForm","height=550,width=1050,toolbar=0,menubar=0,location=100,status=no,scrollbars=1,resizable=1,right=300,top=100");
    $('.jobTime').submit();
}

我希望其他人会觉得这很有用。