1

我有一个页面上有多个表格。这些表单使用数据属性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 ,我也尝试过 beforeSend这是一个本地事件,似乎是唯一相关的事件:

$('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 时触发一次,并且仅针对正在提交的当前表单?

4

1 回答 1

2

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

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

于 2012-08-21T19:36:23.737 回答