javascript:需要按两次按钮才能onclick触发

时间:2018-08-28 01:31:08

标签: javascript php html

如果我的代码丑陋且使用不正确,我先向我们的程序员道歉。我这样做是因为在我工作的地方,其他人都不知道编程。 :)

我创建了一个页面来下载一些证书。用户身份验证后,他将被重定向到证书下载页面。在此刻之前,当用户进行身份验证时,将自动生成证书,但是如果用户确实要生成证书,我想为其单击按钮。

起初看起来像这样:

<div class="form">
        <p><strong><span>Usuário: <?= $_SESSION['user'] ?></span></strong></p>
        <form action="protected.php" id="my_form" method="post">
                <input type="submit" name="gen_cert" value="Gerar certificados" onclick="switcher('gen_cert');this.disabled=true;" />
        </form>
        <?php if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['gen_cert'])) { ?>
                        <?php require("cert_generate.php"); ?>
                        <div id="gen_cert" style="display:none">
                        <p><a href="download.php?fid=<?= $_SESSION['user'].".p12" ?>" class="button" >Download do certificado pessoal</a></p>
                        <p><a href="download.php?fid=ca.crt" class="button" >Download da CA</a></p>
                        </div>
        <?php } ?>
</div>

是的,我在php中有html标记。起初,这是我提出"cert_generate.php" check by "if($_SERVER['REQUEST_METHOD'] == "POST"isset($_POST['gen_cert']))"的唯一方法。

已更新

脚本

   function switcher() {
        var x = document.getElementById("generator");
        if (x.style.display === "none") {
                x.style.display = "block";
        } else {
                x.style.display = "none";
        }
}

我的问题是我需要按两次以显示显示内容的div的“生成证书”按钮。

我该如何解决?

2 个答案:

答案 0 :(得分:0)

在按钮上附加一个双击事件

<p ondblclick="downloadCA(id)">Download da CA</p>

id就是您要在网址的fid查询字符串中出现的任何内容。

然后将此js代码放入脚本中

function downloadCA(id){
   window.location.href = 'download.php?fid=' + id;
}

答案 1 :(得分:0)

首次加载页面时,由于以下情况,您的gen_cert div未加载到dom中: if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['gen_cert'])

您可以删除onclick事件并在gen_cert div上不显示:

或者,如果您想使用jquery显示/隐藏div,则无需提交表单。您可以将输入类型更改为提交到按钮,删除表单“ my_form”并删除条件 if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['gen_cert'])