如果用户在表单页面上,我会尝试在没有单击更新按钮的情况下离开确认消息。
我使用的coffeescript代码如下
# used to detect if a user is navigating off a page
if form_click == true
window.onbeforeunload = ->
"You have unsaved data! do you really want to exit?"
如果我使用1 == 1或1 == 2作为测试用例,它的效果非常好。但是,我很难从link_to代码发送变量来设置form_click。
我试过以下
<%= f.button :button, :class => 'btn-primary',
data: {form_click: true},
remote: true %>
但是我无法将变量传递给coffeescript代码。我绝对不会精通javascript和coffeescript,因为这可能会显示,并且会感激任何关于如何解决这个问题的建议将非常感激
答案 0 :(得分:1)
查看生成的HTML。我怀疑link_to
正在创建类似于:
<button class="btn-primary" data-form_click="true" data-remote="true"></button>
如果是这样,那么你需要的coffeescript就像是:
$('data-form_click').click( ->
if $(this).attr('data-form_click') == 'true'
window.onbeforeunload = ->
confirm("You have unsaved data! Do you really want to exit?")
)
上面的代码不在袖口上,但主要的一点是按钮上的属性是字符串,而不是布尔值,所以你需要相应地调整。
使用JS调试工具放置一个断点,以便您可以检查form_click
的值,这也是查看应该与之比较的另一种方法。