首页 > 解决方案 > 单击表单按钮后,隐藏按钮 div 并显示隐藏的 div

问题描述

我试图隐藏按钮 div 并在单击表单按钮后显示隐藏的 div 并延迟提交/重定向。以下是我想出的,但似乎没有 100% 有效。

$('form').submit(function(e) {
  e.preventDefault();
  $('#checking').show();
  $('.button').hide();

  setTimeout(() => {}, 7000);
  return true;
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
  <input type="text" placeholder="Enter Name" name="details" />
  <input type="submit" class="button" value="CHECK" />
</form>
<div id="checking" style="display: none;">
  CHECKING DETAILS... Please wait
</div>

非常感谢任何建议

标签: javascripthtmljquerycssforms

解决方案


在您的计时器回调中,您需要提交表单,但是当您提交时,sumbit回调将一次又一次地运行 call e.preventDefault(),因此您可以使用变量作为“标志”来检查是否应该取消事件。

let flag = false;

$('form').on("submit", function(e) {
  if(!flag){
    e.preventDefault();
    $('#checking').show();
    $('.button').hide();
    flag = true;
  }
  setTimeout(function(){ 
    $('form').submit();
  }, 7000);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="https://www.example.com" method="Post">
  <input type="text" placeholder="Enter Name" name="details" />
  <input type="submit" class="button" value="CHECK" />
</form>
<div id="checking" style="display: none;">
  CHECKING DETAILS... Please wait
</div>


推荐阅读