防止Rails link_to_remote多个提交w Javascript

时间:2010-12-23 05:28:33

标签: javascript ruby-on-rails onclick link-to-remote double-submit-prevention

在Rails项目中,我需要保持link_to_remote不被双击。它看起来像:before和:after是我唯一的选择 - 它们分别在onclick Ajax调用中得到前置/附加。但是,如果我尝试类似的东西:

:before => "self.stopObserving()"

Ajax永远不会运行。如果我尝试它:在运行Ajax之后但链接永远不会停止观察。

我看到的解决方案依赖于创建变量并阻止整个表单,但此页面上有多个link_to_remote行,一次点击多个行是有效的 - 只是两次不同。在link_to_remote之外声明的每行一个变量似乎非常笨拙......

而不是使用Prototype我最初尝试使用普通的Javascript作为这个概念证明 - 但它也失败了:

  

< a href =“#”onclick =“self.onclick = function(){alert('foo');};”> click< / a>

点击时会发出警报 - 这里的lambda什么都不做?下一个更像是期望的目标,应该只在第一次提醒。但它每次都会发出警报:

  

< a href =“#”onclick =“alert('bar'); self.onclick = function(){return false;};”> click< / a>

所有想法都赞赏!

1 个答案:

答案 0 :(得分:0)

我使用jQuery工作:

link.click(function() { 
  alert('foo'); 
  $(this).unbind('click'); 
  $(this).click(function() { 
    return false; 
  }); 
  return false; 
})

所以你肯定可以用普通的旧javascript来完成同样的工作。

使用jQuery执行此操作的好处是,可以很容易地将类添加到您希望以这种方式运行的所有链接,并且在您的应用程序中。您可以将此行为分配给该类的所有链接。

当然,您也可以使用普通的JavaScript来完成所有这些... jQuery只是让它变得更容易。

相关问题