javascript - 提交表单后使隐藏元素可见
问题描述
目前info、stat 和 foo元素是隐藏的。当我提交表单时,它不会使它们可见。如果我在里面使用这个unhide()函数<button onclick="unhide()"></button>
,它可以正常工作。但它在表单中不起作用。
unhide()函数如何在提交表单后使这些元素可见?
<style>
#info {
visibility: hidden;
}
#stat {
visibility: hidden;
}
#foo {
visibility: hidden;
}
</style>
<script>
function unhide() {
var x = document.getElementById("info");
var y = document.getElementById("stat");
var z = document.getElementById("foo");
if (x.style.visibility === "hidden" && x.style.visibility === "hidden" && x.style.visibility === "hidden") {
x.style.visibility = "visible";
y.style.visibility = "visible";
z.style.visibility = "visible";
}
else{
x.style.visibility = "hidden";
y.style.visibility = "hidden";
z.style.visibility = "hidden";
}
}
</script>
<form method="GET" onsubmit="unhide()" action="../index.js" class="justify-center flex p-6">
<input class="mt-4 text-lg p-3 text-white rounded-l-md border-white border-2 bg-gray-900 outline-none" type="text" name="search" placeholder="Enter country">
<input class="mt-4 py-3 px-6 font-bold rounded-r-md text-lg cursor-pointer" value="search" id="submit" type="submit">
</form>
解决方案
提交表单时,默认行为是将数据提交到action
属性中指定的 url。这会触发页面重新加载。
因此,您的隐藏元素可能会变得可见,但是页面重新加载如此之快,您无法在它们再次变得不可见之前看到它们。
为防止出现这种默认行为,event
请在 eventHandler 中包含一个作为参数onsubmit
,并在代码的第一行中插入该行event.preventDefault()
。
这将允许您提交表单数据,但不会触发页面重新加载,因此您的隐藏元素现在将可见。
你可以看看下面的片段:
function unhide(event) {
event.preventDefault();
var x = document.getElementById("info");
var y = document.getElementById("stat");
var z = document.getElementById("foo");
if (x.style.visibility === "hidden" && y.style.visibility === "hidden" && z.style.visibility === "hidden") {
x.style.visibility = "visible";
y.style.visibility = "visible";
z.style.visibility = "visible";
} else {
x.style.visibility = "hidden";
y.style.visibility = "hidden";
z.style.visibility = "hidden";
}
}
#info {
visibility: hidden;
}
#stat {
visibility: hidden;
}
#foo {
visibility: hidden;
}
<form method="GET" onsubmit="unhide(event)" action="/" class="justify-center flex p-6">
<input class="mt-4 text-lg p-3 text-white rounded-l-md border-white border-2 bg-gray-900 outline-none" type="text" name="search" placeholder="Enter country">
<input class="mt-4 py-3 px-6 font-bold rounded-r-md text-lg cursor-pointer" value="search" id="submit" type="submit">
</form>
<div id="info"> This is some info </div>
<div id="stat"> Stat </div>
<div id="foo"> Some random information </div>
推荐阅读
- python - 为什么高级索引会创建切片矩阵的副本?
- java - 获取 JSON 字符串的抽象语法树
- ios - UITableView - 在 sectionHeader 中调整FontSizeToFitWidth
- java - 使用流 StreamSupplier
- c# - 如何使用 streamreader 提取发送给我的单行?
- python - Python/AWS/conda - ImportError:无法导入名称'multiarray'
- svn - 我在哪里可以找到假的 svn 存储库?
- vba - 比较 2 excel 表与公共键
- angular - 如何将材料角度更改为旧版本?
- pattern-matching - 为什么顺序在函数定义中很重要?