【问题标题】:How to prevent enter key submit in rails如何防止在rails中输入密钥提交
【发布时间】:2013-12-24 09:57:22
【问题描述】:

简单示例:

 <%= 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

但在我的情况下,我必须使用回车键来处理另一个事件。

我必须通过按回车键在另一个输入字段中搜索users

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

如何防止在rails 中使用回车键提交?

我必须使用纯 html 标签吗?喜欢&lt;form&gt; tag&lt;submit&gt; button

有什么好的解决办法吗?

【问题讨论】:

    标签: jquery ruby-on-rails


    【解决方案1】:

    输入键提交不是rails问题,是HTML/JS问题

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

    我会这样解决你的问题:

    $('form').on('keypress', e => {
        if (e.keyCode == 13) {
            return false;
        }
    });
    

    如果您使用的是 Turbolinks:

    $(document).on('turbolinks:load', () => {
        $('form').on('keypress', e => {
            if (e.keyCode == 13) {
                return false;
            }
        });
    });
    

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

    【讨论】:

    • 这对我不起作用。还尝试将脚本直接放在我的部分表单中。如果我使用form_tag,$("form") 应该有所不同吗?
    • form 是 HTML 元素选择器 - 你在使用 Turbolinks 吗?
    • 如果它不起作用,原因很可能是 Turbolinks。查看我对 Turbolinks 解决方案的编辑。
    【解决方案2】:

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

    Prevent users from submitting a form by hitting Enter

    【讨论】:

      猜你喜欢
      • 2011-03-10
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多