JS,如果它正在执行中,如何停止进程执行...?
问题描述:
如果按钮已被点击,我该如何停止向服务器发送数据?我不希望禁用=“禁用”响应(按钮是自定义的)。JS,如果它正在执行中,如何停止进程执行...?
我试图设置一个全局的var button_clicked = FALSE;
设置为true,当点击按钮时,在接收到响应后再次设置为false。但是,这并不是工作,因为我的鼠标搞砸了,垃圾邮件点击真的很快(虽然我只点击一次 - >这实际上帮助我看到提到的方法并不那么敏感)。
是否有更好的方法来停止进程或禁用DOM元素onClick?也许禁用事件? js或jquery的答案更可取。或者,也许这真的不能在真正的快速请求中完成。我知道这取决于很多东西(比如用户的cpu)。任何评论或回答是受欢迎的。也许对于每一次点击页面设置用户等待几个毫秒?
答
试试这个小构造:
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();
});
答
如果您注册事件侦听器,则您获得的Event对象将有一个preventDefault()
方法。这样可以避免点击链接或发送提交的表单。
如果是由事件处理程序触发的自定义操作,则唯一的可能是检查处理程序函数中的条件是否应该执行该操作。然而,禁用按钮并不是那么糟糕,因为您需要通知用户不会发生任何事情。
答
单击按钮时移除点击处理程序。准备好下一次点击时再添加一次。
button.onclick = null;
所以这是什么按钮?这是AJAX请求的一部分吗?这是表单的提交按钮吗?你能指定吗? – Joseph 2012-03-30 00:53:50
就像我说的这是一个自定义按钮(不使用buton ur提交标签),是的,它是为ajax请求。 – 2012-03-30 00:54:43
您的电脑很可能会比您的点击速度快。你能告诉我们使用的代码吗?一面旗子应该适合你需要的东西。 – Louis 2012-03-30 00:58:04