javascript - 加载程序显示后重置按钮

标签 javascript html css

大家好,我正在尝试创建一个按钮,该按钮在提交时变成加载程序,然后在表单成功提交后返回到按钮。

我认为我的问题出在 JS 中。 不确定如何向我的 JS 添加超时以使加载程序在特定时间后或 PHP 提交后隐藏。 我的表单通过 phpmailer 运行并通过 ajax 给出了一个警报 mgs,表明它已经发送,通常 mgs 需要一段时间才能显示,导致客户重新提交

function ButtonClicked() {
  document.getElementById("formsubmitbutton").style.display = "none"; // to undisplay
  document.getElementById("buttonreplacement").style.display = ""; // to display
  return true;
}
var FirstLoading = true;

function RestoreSubmitButton() {
  if (FirstLoading) {
    FirstLoading = false;
    return;
  }
  document.getElementById("formsubmitbutton").style.display = ""; // to display
  document.getElementById("buttonreplacement").style.display = "none"; // to undisplay
}
// To disable restoring submit button, disable or delete next line.
document.onfocus = RestoreSubmitButton;
.cssload-container {
  position: relative;
  height: 40px;
  width: 40px;
  margin: auto;
  margin-top: 2%;
}

.cssload-whirlpool,
.cssload-whirlpool::before,
.cssload-whirlpool::after {
  position: absolute;
  top: 50%;
  left: 50%;
  border: 1px solid #08d108;
  border-left-color: rgb(0, 0, 0);
  border-radius: 924px;
  -o-border-radius: 924px;
  -ms-border-radius: 924px;
  -webkit-border-radius: 924px;
  -moz-border-radius: 924px;
}

.cssload-whirlpool {
  margin: -23px 0 0 -23px;
  height: 40px;
  width: 40px;
  animation: cssload-rotate 1450ms linear infinite;
  -o-animation: cssload-rotate 1450ms linear infinite;
  -ms-animation: cssload-rotate 1450ms linear infinite;
  -webkit-animation: cssload-rotate 1450ms linear infinite;
  -moz-animation: cssload-rotate 1450ms linear infinite;
}

.cssload-whirlpool::before {
  content: "";
  margin: -21px 0 0 -21px;
  height: 41px;
  width: 41px;
  animation: cssload-rotate 1450ms linear infinite;
  -o-animation: cssload-rotate 1450ms linear infinite;
  -ms-animation: cssload-rotate 1450ms linear infinite;
  -webkit-animation: cssload-rotate 1450ms linear infinite;
  -moz-animation: cssload-rotate 1450ms linear infinite;
}

.cssload-whirlpool::after {
  content: "";
  margin: -27px 0 0 -27px;
  height: 52px;
  width: 52px;
  animation: cssload-rotate 2900ms linear infinite;
  -o-animation: cssload-rotate 2900ms linear infinite;
  -ms-animation: cssload-rotate 2900ms linear infinite;
  -webkit-animation: cssload-rotate 2900ms linear infinite;
  -moz-animation: cssload-rotate 2900ms linear infinite;
}

@keyframes cssload-rotate {
  100% {
    transform: rotate(360deg);
  }
}

@-o-keyframes cssload-rotate {
  100% {
    -o-transform: rotate(360deg);
  }
}

@-moz-keyframes cssload-rotate {
  100% {
    -moz-transform: rotate(360deg);
  }
}
<div class="col-md-4 col-md-offset-4">
  <div id="formsubmitbutton">
    <button onclick="ButtonClicked()" name="submit" type="submit" class="btn btn-primary btn-block btn-lg">Send <i class="ion-android-arrow-forward"></i></button>
  </div>
  <div id="buttonreplacement" style="display:none;">
    <div class="cssload-container">
      <div class="cssload-whirlpool"></div>
    </div>
  </div>
</div>

最佳答案

您应该像这样从 ajax 请求中调用 ButtonClicked 和 RestoreSubmitButton:

function sendFormData(){
    ButtonClicked(); //Start to display loading indicator before sending the request

   $.ajax({
         url:'ServiceToFetchDocType',
         type:'post',
         cache:false,
         success: function(response){
             /* Ajax has now completed so you can re-render the button now*/
             RestoreSubmitButton();
        }
}

关于javascript - 加载程序显示后重置按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564428/

相关文章:

javascript - 如何使用动画一个接一个地移动一个 div

html - 缩放下的 css 错误

html - 如何使用 css 将版权和图像居中?

javascript - 如何在不计算隐藏元素的情况下获取索引?

javascript - 通过服务在 Controller 之间共享变量

android - 使用 Foundation 5 时在移动设备上渲染错误

html - 创建 3 个 float div

html - 根据屏幕大小更改 HTML 内容顺序

javascript - Google map API - map 不再显示

javascript - javascript 或 Jquery 中的鼠标点击预防