jQuery中的Ajax事件 - 使用Rails在表单提交上触发事件

时间:2012-08-21 19:03:10

标签: jquery ruby-on-rails ajax

我有一个包含多个表单的页面。这些表单使用数据属性 data-remote =“true  这样Rails jquery-ui-rails.js会自动添加事件以通过javascript提交这些表单。

当用户提交任何这些表单时,我想添加一个类,以便我可以根据需要设置它。由于Rails自动添加ajax处理程序来提交表单,我不能在添加处理程序时添加此类 - 我需要手动为此添加代码(我认为)。

以下代码是我的第一次尝试 - 这很好,但是由于ajaxStart是一个全局事件,它会同时为页面上的每个表单触发它。

$('form').ajaxStart(function(e) {
  console.log("element is " + ($(e).attr('id')));
  return $(e).addClass('submitting');
})

我已经尝试过发送,因为根据http://docs.jquery.com/Ajax_Events这是一个本地事件,似乎是唯一相关的事件:

$('form').beforeSend(function(e) {
  console.log("element is " + ($(e).attr('id')));
  return $(e).addClass('submitting');
})

但是,这会引发错误:

Uncaught TypeError: Object [object Object] has no method 'beforeSend' 

如何将此事件附加到我页面上的所有表单中,以便每次ajax提交时触发一次,并且仅针对当前提交的表单?

1 个答案:

答案 0 :(得分:1)

我认为您可以使用ajax:beforeSend.railsajax:complete.rails个事件:

https://github.com/rails/jquery-ujs/blob/8b147fb023f0d13deebea750e7e9827b6d3bc8ba/src/rails.js#L405