javascript - jQuery - 检测是否通过按 ENTER 发送表单

标签 javascript jquery ruby-on-rails forms

在将数据从表单发送到 Rails Controller 之前,我需要执行一些 JavaScript 工作。

这是(简而言之)我的表格:

<form action="/results" class="search_users" method="POST">
  ...
  <a class='search_users_btn' href='' id="search_users_form">
    <span class="streamline" aria-hidden="true">Search</span>
  </a>
</form>

当点击Search时按钮,那么这段 JS 会处理这个:

  $(".search_users_btn").click(function(e) {
    var location;
    e.preventDefault();
    location = $(".location_user").val();
    $.when(geocodeFrom(location)).done(function() {
      $(".search_users").submit();
    });
  });

问题是当用户点击 ENTER 时,因为这样上面的 javascript 代码就不会被执行。我尝试添加以下内容:

$(".search_users").keypress(function(ev){
   if (ev.keyCode == 13) {
    console.log('xx'); 
    //$("form")[0].submit();
   }
});

但是当用户点击 ENTER 时,此代码片段不会处理浏览器立即将表单发送到 Controller 。

当用户按下ENTER时如何处理这种情况在 JavaScript 中?

最佳答案

我认为 ENTER 会触发表单中的提交,试试这个:

$(".search_users").keypress(function(ev){
   if (ev.keyCode == 13) {
    ev.preventDefault();
    console.log('gotcha'); 
    //$("form")[0].submit();
   }
});

但您也可以使用标准按钮并处理表单上的提交事件,进行处理,然后对(php?)处理页面进行 ajax 调用:

$(".search_users").on("submit", function(ev){
   ev.preventDefault(); //prevents the original submit

    //information processing ...

    //AJAX call to the form processing page ...

   }
});

关于javascript - jQuery - 检测是否通过按 ENTER 发送表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27743486/

相关文章:

javascript - 具有多种类型的 JQuery 兄弟选择器

javascript - 为什么我的 jquery 删除列表中的第一个元素而不是指定的元素?

ruby-on-rails - DelayedJob Worker 未由 Rails 初始值设定项配置

ruby-on-rails - 带有 Octopus gem 的 Rails。如何使用 rake 创建在 shards.yml 中定义的数据库

javascript - 在两个元素之间保持悬停状态处于事件状态

javascript - 有没有办法在不刷新页面的情况下上传和预览 div 上的图像(替换背景图像)?

javascript - 如何使用 javascript 从每个 JSON 对象中提取特定属性

javascript - 在 momentjs 对象上更改事件触发

php & jquery 上传图片并即时预览显示

ruby-on-rails - rubymine 中的分析器