jquery 如何在Rails中防止输入键提交

3zwtqj6y  于 2024-01-07  发布在  jQuery
关注(0)|答案(3)|浏览(161)

简单的例子:

  1. <%= form_for :post, url: posts_path do |f|%>
  2. <p>
  3. <%= f.label :title%><br/>
  4. <%= f.text_field :title%>
  5. </p>
  6. <p>
  7. <%= f.label :text%><br/>
  8. <%= f.text_area :text%>
  9. </p>
  10. <p>
  11. <%= f.submit%>
  12. </p>
  13. <%end%>

字符串
我认为这是Rails的默认事件处理。在这里,如果用户按回车键,它将提交params
但在我的情况下,我必须使用另一个事件的回车键。
我必须通过按回车键使用另一个输入字段搜索users
但是如果我使用form_for,它会提交表单。:(
如何在rails中阻止使用回车键提交?
我必须使用纯html标签吗?像<form> tag<submit> button
有什么好的解决办法吗?

np8igboo

np8igboo1#

回车键提交不是rails的问题,而是HTML / JS的问题
Rails是后端(存在于服务器上); HTML / JS是客户端(存在于浏览器中)-它们决定启用/禁用哪些功能
我会像这样解决你的问题:

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

字符串
如果您使用Turbolinks:

  1. $(document).on('turbolinks:load', () => {
  2. $('form').on('keypress', e => {
  3. if (e.keyCode == 13) {
  4. return false;
  5. }
  6. });
  7. });


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

展开查看全部
9njqaruj

9njqaruj2#

这不是一个Rails特有的问题,因为它是所有浏览器的原生行为。如果你在表单中有一个提交按钮(你应该:)),那么每个浏览器都会在点击回车后提交表单。* 我还没有检查,但即使没有一个明确的提交按钮,它也应该这样做]接受的答案是正确的,但因为有一个线程给出了一个更复杂的例子,我也会通过它:
Prevent users from submitting a form by hitting Enter

bfnvny8b

bfnvny8b3#

  1. $( document ).on('turbolinks:load', function() {
  2. document.addEventListener("keydown", function (e) {
  3. if (13 == e.keyCode) {
  4. event.preventDefault();
  5. return false;
  6. }
  7. });
  8. });

字符串

相关问题