【问题标题】:Ajax events in jQuery - firing an event on form submission using RailsjQuery 中的 Ajax 事件 - 使用 Rails 触发表单提交事件
【发布时间】:2012-08-21 19:03:10
【问题描述】:

我有一个页面,上面有多个表单。这些表单使用数据属性 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 时触发一次,并且仅针对正在提交的当前表单?

【问题讨论】:

  • 试试改成$('form').ajax({beforeSend: function(e){...}});

标签: jquery ruby-on-rails ajax


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    • 2021-07-07
    相关资源
    最近更新 更多