2012-03-30 101 views
-4

如果按钮已被点击,我该如何停止向服务器发送数据?我不希望禁用=“禁用”响应(按钮是自定义的)。JS,如果它正在执行中,如何停止进程执行...?

我试图设置一个全局的var button_clicked = FALSE;设置为true,当点击按钮时,在接收到响应后再次设置为false。但是,这并不是工作,因为我的鼠标搞砸了,垃圾邮件点击真的很快(虽然我只点击一次 - >这实际上帮助我看到提到的方法并不那么敏感)。

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

+0

所以这是什么按钮?这是AJAX请求的一部分吗?这是表单的提交按钮吗?你能指定吗? – Joseph 2012-03-30 00:53:50

+0

就像我说的这是一个自定义按钮(不使用buton ur提交标签),是的,它是为ajax请求。 – 2012-03-30 00:54:43

+1

您的电脑很可能会比您的点击速度快。你能告诉我们使用的代码吗?一面旗子应该适合你需要的东西。 – Louis 2012-03-30 00:58:04

回答

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(); 
}); 
0

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

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

0

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

button.onclick = null;