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

jQuery - Detect if a form was sent out by hitting ENTER

在将数据从表单发送到 Rails 控制器之前,我还需要做一些 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 并且浏览器立即将表单发送到控制器时,此代码段不会处理。

如何处理用户在 Javascript 中按下 ENTER 的情况?

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

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

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

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

    //information processing ...

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

   }
});