【问题标题】:Can one Rails button post to create and execute javascript?一个 Rails 按钮可以发布来创建和执行 javascript 吗?
【发布时间】:2014-06-27 18:41:51
【问题描述】:

我有一个带有提交按钮的 Rails 表单,但我想知道是否可以制作这个提交按钮 1)发布到控制器创建操作以及 2)执行 Javascript

这是我本质上想要组合的两个按钮:

1. <%= f.submit "Go!", class: "btn btn-primary btn-large btn-block" %>

2. <a href="javascript:ExtInstall()" class="btn btn-default btn-large btn-block" role="button">Download our Google Chrome extension</a>

【问题讨论】:

    标签: javascript ruby-on-rails forms button


    【解决方案1】:

    如果您的按钮是表单的一部分,您可以保持其功能与现在相同。如果它是独立的,你最好像这样使用button_to

    <%= button_to "Download", post_path, id: "button" %> # -> uses POST http verb, so will send to create action
    

    您的问题最好用unobtrusive javascript 回答。这会将按钮的 click 事件绑定到您选择的函数,让您不仅可以提交所需的数据,还可以处理您需要的其他功能:

    #app/assets/javascripts/application.js
    $("#button").on("click", function(){
        ExtInstall(); //do you have any references for this function?
    });
    

    【讨论】:

    • 嗯...对我不起作用。我使用了一个 console.log 并且 ExtInstall 只是没有被调用,就像我在上面尝试 DevDude 的建议时一样
    【解决方案2】:

    是的,您可以通过在 JS 中将 onClick 处理程序添加到提交按钮来做到这一点。

    您可以查看submit_tag with javascript function,了解执行此操作的不同方式。

    【讨论】:

    • 嗯无法让它工作,我试过了:&lt;%= f.submit "Go!", onclick: "javascript:ExtInstall(), class: "btn btn-primary btn-large btn-block" %&gt;,然后当我点击时,我得到一个弹出窗口,上面写着javascript:ExtInstall(),而不是函数正在执行。也尝试过 onclick: "ExtInstall()" 在这种情况下表单运行但安装不会触发。还尝试使用confirm 而不是onclick
    • onclick: "ExtInstall()" 应该可以工作。尝试使用 alert() 或 console.log 进行调试以查看是否调用了 ExtInstall()。顺便说一句,更好的选择是使用基于 jQuery 的 onclick 事件处理程序,如下所述:stackoverflow.com/questions/1070760/…
    • 它没有,console.log 显示它没有被调用,但我不确定为什么......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    相关资源
    最近更新 更多