帮助javascript确认对话框

时间:2011-04-16 23:14:27

标签: php javascript forms

所以这是我的情况:我有一个用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事件....

1 个答案:

答案 0 :(得分:0)

您可以像这样使用confirm()

if(confirm("Are you sure you want to proceed?")){
    document.location = 'confirmed redirect url...';
}
else{
    document.location = 'cancel redirect url...';
}

然后你将它包装在与你的例子相同的PHP块中,必要时显示它,如果没有则隐藏它。