【问题标题】:Rails UJS confirm box cancel button callbackRails UJS 确认框取消按钮回调
【发布时间】:2013-10-22 11:31:03
【问题描述】:

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

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

【问题讨论】:

  • 我不知道也不认为这是值得研究的东西。 “取消”就是“取消”。它不应该有任何副作用。你要做的事情会破坏可用性。

标签: jquery ruby-on-rails ujs


【解决方案1】:

是的,你可以。传入响应对象。在 CoffeeScript 中。

  $('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.
    }
  });

【讨论】:

【解决方案2】:

对于那些在这个问题上磕磕绊绊并使用 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.
  }
});

From Rails Guide:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2020-06-02
    • 2017-10-09
    • 2011-09-16
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多