javascript - 提交表单后用文本替换html按钮元素
问题描述
我在主页上有一个按钮,单击它会打开一个模式。我在模式中有一个带有按钮的表单,在提交时会关闭模式并返回到主页。我想在将模式关闭为纯文本后更改主页上的 html 按钮。模式关闭后如何替换主页中的主按钮?
function submitForm() {
alert('yes');
var button = document.getElementById('mainButton');
button.style.display = 'none';
}
<body>
<button id="mainButton"> Click here </button>
<div class="modal">
<form onsubmit="submitForm()">
<input type="text">
<button> Done </button>
</form>
</div>
</body>
我在 submitForm 函数中尝试了以下内容:
像这样删除按钮:
document.getElementById('mainButton').innerHTML = '';
还尝试过: document.getElementById('mainButton').style.display = 'none'
解决方案
您正在使用一个submit
按钮(这是您使用的默认按钮类型<button>
)。因此,当您单击它时,onsubmit
事件处理程序会触发并提交表单,这会导致当前页面被卸载,因此尝试显示其他任何内容都行不通。
在这种情况下,您需要将表单重定向到具有您想要的内容的另一个页面(这是通过配置form
元素的action
属性来完成的。
如果您真的不需要向服务器提交数据,那么您可以将您必须的按钮类型更改为常规按钮,button
并将事件处理程序更改为仅处理一个click
事件,然后将您已经在做的事情提升到一个新的水平.
除了隐藏您不再希望看到的内容之外display:none
,您还可以显示一些提前设置并默认为的display:none
内容,然后将其更改为该显示display:block
的时间。
function submitForm() {
alert('yes');
var button = document.getElementById('mainButton');
button.style.display = 'none';
// Remove the class that hides the element that you want to now see
document.querySelector(".afterClick").classList.remove("afterClick");
}
.afterClick { display:none; } /* Defaults to hidden */
<body>
<button id="mainButton"> Click here </button>
<div class="afterClick">Thanks!</div>
<div class="modal">
<form onclick="submitForm()">
<input type="text">
<button type="button"> Done </button>
</form>
</div>
</body>
推荐阅读
- ios - 根据环境变量调整 Xcode Build 设置值
- excel - 跳过函数错误并继续下一次检查 (VLOOKUP)
- java - 如何在创建时填充 Java 地图
- python - 从 websockets ws_handler 访问服务器上下文
- php - 如何中止 PrePersist 函数的查询执行?
- c++ - 将前 n 个素数保存在数组中而不覆盖它
- python - Shell脚本在目录中找到文件,如何传递给python脚本
- .net - 在 WPF 应用程序 (.NET Core) 中绘图会引发运行时错误
- javascript - 如何检测超出特定范围的散焦?
- typescript - 结构类型与联合失败?