【发布时间】:2021-05-18 07:20:13
【问题描述】:
我有一个简单的表单,它在提交时调用函数“activate_loading”。 “activate_loading”包含两行代码,用于显示加载微调器并将提交按钮的文本更改为“请稍候”:
document.getElementById("loader_mini").style.display = "block";
将加载微调器的显示从 display:none 更改为 display: block。
document.getElementById("submitBtn").innerText = "Please Wait...";
将按钮的 innerText 更改为“请稍候”而不是“提交”
每一行都可以单独运行,但是放在一起时,加载微调器的显示不会从 display:none 变为 display: 块。好像那行
document.getElementById("submitBtn").innerText = "Please Wait...";
原因
document.getElementById("loader_mini").style.display = "block";
不工作。
- 我试过换行,结果相同 结果。
- 我试过 .style.visibility="visible";而不是显示:块-> 结果相同。
- 我还注意到从 按钮元素。代码运行良好。
- 我尝试切换浏览器,但结果还是一样(在 chrome 和 firefox 上尝试过)
有人知道问题是什么吗?我真的很感激这方面的任何帮助。代码看起来很简单,但我似乎看不出是什么导致了问题。
function activate_loading() {
document.getElementById("loader_mini").style.display = "block";
document.getElementById("submitBtn").innerText = "Please Wait...";
}
#loader_mini{
width: 20px;
height: 20px;
border: 2px solid blue;
border-top: 2px solid white;
border-left: 1px solid white;
border-bottom: 0px solid white;
border-radius: 50%;
-webkit-animation: spin 1.2s linear infinite;
animation: spin 1.2s linear infinite;
display: none;
}
@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<form id="form" method="post" class="hide_<?=$sent_status_show?>"
onsubmit="activate_loading()">
<label for="email">Email Address:</label>
<input type="email" name="email"/>
<br>
<label for="subject">Email Subject:</label>
<textarea name="subject"></textarea>
<br>
<button id="submitBtn" class="submitBtn" type="submit">
Submit
<div id="loader_mini">
</div>
</button>
</form>
【问题讨论】:
-
使用return语句onsubmit="return activate_loading()" 然后在做同样的事情后传递true或false。
-
<div id="loader_mini">是 inside 你的按钮。当您编辑按钮的innerText时,它会将里面的所有内容替换为"Please Wait...",包括<div id="loader_mini">。
标签: javascript html forms getelementbyid onsubmit