我有一个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行代码,给予或采取...我怎样才能让它正常工作?
答案 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();
}
我希望其他人会觉得这很有用。