我正在使用这个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')
对于我做错的任何建议都会非常感谢,谢谢!
答案 0 :(得分:1)
是因为元素(例如$('#confirmation_dialog').find('.cancel')
)在你绑定它的那一点上不存在吗?
您可以使用jQuery的on
方法通过指定选择器动态绑定到事件,如下所示:
$('body').on 'click', '#confirmation_dialog .cancel', (ev) ->
$('.disabled').removeClass('disabled')
这似乎是一个可能的原因,因为对话框通常使用JavaScript添加到页面中,因此最初不存在于DOM中。虽然很难确定,但却没有看到完整的消息来源。