7

我正在使用 Rails jquery ujs在我的应用程序中处理 ajax。此外,我正在使用confirm销毁任何记录的选项。作为我目前的设置,我在点击data-remote=true链接时连接了一个加载覆盖屏幕。

我只想知道:当用户单击cancel确认框时,有没有办法可以挂钩回调事件,并且可以关闭加载程序覆盖。

4

2 回答 2

7

是的你可以。传入响应对象。在咖啡脚本中。

  $('selector').on 'confirm:complete', (e, response) ->
    if response
      # User confirmed
    else
      # User cancelled.

在 Javascript 中:

  $('selector').on('confirm:complete', function(e, response) {
    if(response) {
      // User confirmed
    }
    else {
      // User cancelled.
    }
  });
于 2014-02-11T10:26:05.933 回答
3

对于那些在这个问题上磕磕绊绊并使用 Rails >= 5.1 的人,请注意回调参数已捆绑到event.detail一个数组中。第一个回调参数是event.detail[0]等等。

要更新 Mohamad 的答案,以下是如何检查 Rails >= 5.1 中的确认值。

$('selector').on('confirm:complete', function(e) {
  if (e.detail[0]) {
    // User confirmed
  }
  else {
    // User cancelled.
  }
});

从 Rails 指南

Rails 5.1 引入了 rails-ujs 并删除了 jQuery 作为依赖项。[...] 与带有 jQ​​uery 的版本不同,所有自定义事件都只返回一个参数:event。在此参数中,有一个附加属性详细信息,其中包含一组额外参数。

于 2019-02-19T17:31:50.613 回答