如何防止在rails中输入密钥提交

时间:2013-12-24 09:57:23

标签: jquery ruby-on-rails

简单示例:

 <%= form_for :post, url: posts_path  do |f|%>
    <p>
        <%= f.label :title%><br/>
        <%= f.text_field :title%>
    </p>
    <p>
        <%= f.label :text%><br/>
        <%= f.text_area :text%>
    </p>
    <p>
        <%= f.submit%>
    </p>
<%end%>

我认为这是一个Rails默认事件处理。在这里,如果用户按下回车键,则会提交params

但在我的情况下,我必须使用enter键进行另一个事件。

我必须按回车键搜索users另一个输入字段。

但如果我使用form_for,则提交表单。 :(

如何使用rails中的回车键阻止提交?

我必须使用普通的html标签吗?与<form> tag<submit> button一样?

有什么好的解决方案吗?

2 个答案:

答案 0 :(得分:20)

输入密钥提交不是轨道问题,这是一个HTML / JS问题

Rails是后端(存在于服务器上); HTML / JS是客户端(在浏览器中) - 它们确定启用/禁用哪些功能

我会解决你的问题:

#app/assets/javascripts/application.js
$("form").on("keypress", function (e) {
    if (e.keyCode == 13) {
        return false;
    }
});

好参考:How to prevent ENTER keypress to submit a web form?

答案 1 :(得分:1)

这不是Rails特定的问题,因为它是所有浏览器的本机行为。如果您在表单中提交了一个按钮(并且您应该:))那么每个浏览器都会在输入后提交表单。 *我还没有检查过,但即使没有明确的提交按钮,也应该这样做] 接受的答案是正确的,但由于有一个线程提供了一个更复杂的例子,我也会经历它:

Prevent users from submitting a form by hitting Enter