JavaScript:需要按两次按钮才能触发onClick



事先,如果我的代码很丑,并且不符合正确的模式,我向我们世界的程序员道歉。我这样做是因为在我工作的地方,没有人知道编程。:)

我创建了一个页面来下载一些证书。用户进行身份验证后,他将被重定向到证书下载页面。直到这一刻,当用户进行身份验证时,证书将自动生成,但我想放一个按钮供用户单击,如果他们真的想生成证书。

乍一看,它看起来像这样:

<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

我该如何解决这个问题?

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

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

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

在按钮上附加双击事件

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

此处id是您希望在 url 的 fid 查询字符串中出现的任何内容。

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

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

最新更新