JS,如果正在执行,如何停止进程执行......?

时间:2012-03-30 00:52:35

标签: javascript jquery

如果单击了按钮,如何停止向服务器发送数据?我不想要禁用=“禁用”响应(按钮是自定义的)。

我尝试将全局var button_clicked = FALSE;设置为单击按钮时为true,之后在收到响应时再将其设置为false。但这不起作用,因为我的鼠标搞砸了,垃圾邮件点击速度非常快(虽然我只点击一次 - >这实际上帮助我看到提到的方法不是那么精确)。

是否有更好的方法来停止进程或禁用onClick上的DOM元素?也许禁用该事件? js或jquery的答案更可取。或者这可能无法在真正快速的请求中完成。我知道这取决于很多东西(比如用户的cpu)。欢迎任何评论或回答。也许每次点击页面都会让用户等待几毫秒?

3 个答案:

答案 0 :(得分:1)

试试这个小构造函数:

function MyForm()
{
  this.check = false;

  this.form = function(){
    var f = this;
    $('#form').submit(function(e){
      e.preventDefault
      if( f.check === false )
      {
        f.check = true;
        $.ajax({
          ...blah blah
          success: function( data )
          {
            //if you want to let them send again, uncomment this next line
            //f.check = false;
          }
        })
      }
  });
  this.form();
}

$(document).ready(function(){
  var my = new MyForm();
});

答案 1 :(得分:0)

如果您注册了一个事件监听器,那么您获得的Event对象将具有preventDefault()方法。这样可以避免点击链接或发送提交的表单。

如果它是由事件处理程序触发的自定义操作,唯一的可能性是检查处理程序函数中的条件是否确实应该采取操作。然而,禁用按钮并不是那么糟糕,因为您需要通知用户不会发生任何事情。

答案 2 :(得分:0)

单击按钮时删除单击处理程序。准备好下次点击时再添加它。

button.onclick = null;