如果我的代码丑陋并且不符合正确的模式,我提前向我们世界的程序员道歉。我这样做是因为在我工作的地方没有其他人懂编程。 :)
我创建了一个页面来下载一些证书。用户认证通过后,跳转至证书下载页面。直到这一刻,当用户进行身份验证时,证书将自动生成,但我想放一个按钮供用户点击,如果他们真的想生成证书。
初看起来是这样的:
<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_cert div 未加载到 dom 中:
if($_SERVER['REQUEST_METHOD'] == "POST"and isset($_POST['gen_cert'])
您可以删除 onclick 事件并在 gen_cert div 上显示:none。
或者,如果您想使用 jquery 显示/隐藏 div,则不需要提交表单。您可以更改提交到按钮的输入类型,删除表单“my_form”并删除条件
if($_SERVER['REQUEST_METHOD'] == "POST"and isset($_POST['gen_cert'])
关于javascript:需要按下按钮两次才能触发onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048903/