延迟提交按钮单击使用Jquery

时间:2014-11-24 03:13:08

标签: javascript jquery html

我是Jquery的新手,我的问题是我可以延迟点击提交按钮,例如,提交后您无法单击提交按钮1秒钟,因此我可以阻止提交按钮上的点击垃圾邮件

这是我的Click事件

$("#btnConfirmEditNo").click(function (e) {
        e.preventDefault();
        $('#editContactForm').validationEngine('hide');
        editwnd.close();
    });

也尝试了settimeout(),但它延迟了关闭窗口

3 个答案:

答案 0 :(得分:2)

此示例可能对您有所帮助:

使用开 - 关

function handleClick(evt) {
     $( "#btn" ).prop( "disabled", true );
     setTimeout(function() {
       $( "#btn" ).prop( "disabled", false );
       $('#btn').on('click', handleClick);       
     }, 1000);
     $( this ).off( event );     
}

$('#btn').on('click', handleClick);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Click Me</button>

使用一个

function handleClick(evt) {
     $( "#btn" ).prop( "disabled", true );
     setTimeout(function() {
       $( "#btn" ).prop( "disabled", false );
       $('#btn').one('click', handleClick);       
     }, 1000);     
}

$('#btn').one('click', handleClick);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Click Me</button>

答案 1 :(得分:0)

您可以在按钮上注册回调函数,然后使用jquery off方法删除该回调。这意味着当按下提交按钮时,您可以删除事件处理程序,然后设置一个计时器,该计时器随后会在计时器触发一段时间后重新添加它。您可以使用window.setTimer()函数注册一段时间后要调用的函数。

另一种算法是在单击按钮时设置类级别“标志”,并在计时器到期时重置。在按下按钮的处理程序中,您将检查标志的值,如果为true,则忽略按下按钮。

答案 2 :(得分:0)

基本上setTimeout用于处理1s 关闭状态。
以下是两个例子:

使用.one()

var $btn = $('#btnConfirmEditNo');

function doSomething() {

  // Do here whatever you want

  setTimeout(function(){
    $btn.one("click", doSomething);
  }, 1000);
}

$btn.one("click", doSomething);

使用标志

function doSomething() {
  var el = this;
  if(el.noClick) return;
  el.noClick = 1;

  // Do here whatever you want

  setTimeout(function() { el.noClick = 0; }, 1000);
}

$('#btnConfirmEditNo').click(doSomething);