触发'点击'事件,当在rails中的确认对话框上单击cancel时

Triggering a 'click' event when cancel is clicked on a confirmation dialogue box in rails

本文关键字:对话框 确认 cancel 单击 rails 事件 点击 当在 触发      更新时间:2023-09-26

我使用这个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')

任何建议,我做错了,将非常感激,谢谢!

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

你可以使用jQuery的on方法通过指定选择器来动态绑定事件,如下所示:

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

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