jQuery - 通过按Enter键检测表单是否已发送出去

时间:2015-01-02 14:10:17

标签: javascript jquery ruby-on-rails forms

在我将表格中的数据发送到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的情况?

1 个答案:

答案 0 :(得分:2)

我认为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 ...

   }
});