所以这是我的情况:我有一个用PHP验证的表单。我想这样做,如果表单验证失败,用户被迫点击确认对话框,然后导航到另一个页面(表单相当大,他们不想在保存之前意外地离开它)。我这样做是这样的:
见下面的更新功能,
基本上在函数中使用php来设置正文以呈现确认或根据表单的错误状态不执行任何操作。没有提交表单时没有任何反应,我点击一个链接,好。当表单显示错误并单击链接时,将出现确认对话框,但取消它会导致重新出现。如果我第二次取消它,页面请求将会通过,即使它不应该。我不熟悉javascript,所以我不确定发生了什么。我有更好的办法吗?
编辑:我想出来,这是一个组合的事情。第一个是我的一个非常愚蠢的错误:我在我的列表中为每个链接调用两个标签和标签的onlick,因此为什么盒子弹出两次。
第二部分是即使我的函数已经返回bool,onclick也需要一个明确的返回声明。我在做:
<a onclick="forceConfirm();" href="somepage.html">Blah</a>
应该是:
<a onclick="return forceConfirm();" href="somepage.html">Blah</a>
然后只需编辑PHP,以便在表单尚未提交时,forceConfirm始终返回true,绕过确认:
function forceConfirm(){
<?php
if($form->errorStatus){
echo 'if(confirm("Are you sure you want to navigate away from this page? All unsaved changes will be lost.")){'."\n".
'return true;'."\n".'}'."\n".
'else{ return false;}';
}
else{ echo 'return true;';}
?>
}
现在我只需要弄清楚如何使用jQuery将其应用于所有链接,而无需在整个地方放置onclick事件....
答案 0 :(得分:0)
您可以像这样使用confirm()
:
if(confirm("Are you sure you want to proceed?")){
document.location = 'confirmed redirect url...';
}
else{
document.location = 'cancel redirect url...';
}
然后你将它包装在与你的例子相同的PHP块中,必要时显示它,如果没有则隐藏它。