【问题标题】:Triggering a 'click' event when cancel is clicked on a confirmation dialogue box in rails在rails中的确认对话框上单击取消时触发“单击”事件
【发布时间】:2015-12-31 16:56:30
【问题描述】:

我正在使用此 gem (https://github.com/bluerail/twitter-bootstrap-rails-confirm) 将标准浏览器确认对话框替换为引导模式,它正在工作,但是,当“确认”或“取消”时没有内置回调按钮或选中,所以我正在尝试创建自己的。

我目前正在禁用单击原始链接以防止用户单击两次,但是,如果在确认对话框中单击“取消”,则需要重新启用该链接。这是我尝试过的:

$('#confirmation_dialog').find('.cancel').on 'click', (e) ->
    console.log('cancel was clicked')
    $('.disabled').removeClass('disabled')

问题是当单击“取消”按钮/链接时,它不会运行。

当使用 Chrome JS 控制台时,我可以在模态框上找到正确的“取消”按钮,并使用

调用它
$('#confirmation_dialog').find('.cancel').click()

这有效地取消和关闭了模式,但是,我的on click 事件没有被触发,所以按钮没有重新启用。

这是页面上供用户点击的链接:

<td><%= link_to 'Cancel Appt', cancel_appointment_path(appointment), class: 'btn btn-default btn-xs btn-danger btn-disable-after-click', data: { confirm: "Are you sure you want to cancel the appointment?", commit: 'Yes', cancel: 'No' } %></td>

这会禁用按钮,因此用户无法点击两次:

$('.btn-disable-after-click').on 'click', (e) ->
    $(this).addClass('disabled')

任何关于我做错的建议将不胜感激,谢谢!

【问题讨论】:

    标签: javascript ruby-on-rails ruby twitter-bootstrap coffeescript


    【解决方案1】:

    是因为元素(例如$('#confirmation_dialog').find('.cancel'))在您绑定到它的点不存在吗?

    你可以使用jQuery的on方法通过指定选择器来动态绑定事件,像这样:

    $('body').on 'click', '#confirmation_dialog .cancel', (ev) ->
        $('.disabled').removeClass('disabled')
    

    这似乎是一个可能的原因,因为对话框通常使用 JavaScript 添加到页面中,因此最初不存在于 DOM 中。没有看到完整的源代码虽然很难确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多