4

我建立了一个监听器来防止表单在特殊情况下提交。

我正在使用谷歌地图自动完成 api,基本上我不想在用户按下回车键并显示“推荐结果框”时提交表单。当用户按下回车键从下拉框中选择一个值而不是提交表单时。

我已经建立了一个正确捕获事件的侦听器,但我不知道如何防止表单被提交。

$('body').live('keydown', function(e) {
    if($(".pac-container").is(":visible") && event.keyCode == 13) {
        e.preventDefault(); // Prevent form submission
        }
    });

我试过 e.preventDefault(); 但它仍然提交表单。表单 ID 为:updateAccountForm

我怎样才能防止它发生?

编辑:我必须指出,似乎直接在搜索输入上侦听按键与 Google API 使自动完成功能无效。所以没有$('input#search')keydown/keypress是可能的

4

6 回答 6

5

解决方案实际上非常简单。所有听众似乎都失败了,但添加了:

onkeydown="if($('.pac-container').is(':visible') && event.keyCode == 13) {event.preventDefault();}"

直接输入就可以了。

于 2012-08-10T09:37:52.057 回答
4

我认为你应该尝试使用这样的东西......包装检查你的容器的可见性

$('body').keypress(function(e) 
{
  if (e.keyCode == '13') {
     e.stopPropagation()

   }
});​

这里的文章有很好的解释。

于 2012-08-10T08:55:11.817 回答
2

试试这个

$('body').live('keydown', function(e) {
    if($(".pac-container").is(":visible") && e.keyCode == 13) {
        e.stopPropagation(); // Prevent form submission
    }
});

请参阅e.keyCode 而不是event.keyCode 而e.stopPropagation()不是e.preventDefault

于 2012-08-10T09:23:24.227 回答
1

为了防止输入键在Google Places API 自动完成的文本字段上提交表单,我需要一个keydown处理程序......

$(document).on('keydown', '#my-autocomplete', function(e) {
    if (e.which == 13) {
      $('#my-autocomplete').show();
      return false;
    }
});

...以及实例化后附加到自动完成的place_changed侦听器:

var my_autocomplete = new google.maps.places.Autocomplete(/*...*/);
google.maps.event.addListener(my_autocomplete, 'place_changed', function() {
    var place = my_autocomplete.getPlace();
    if (!place.place_id) { return; }
});

这并不重要,但它可能会在 jQuery Mobile Web 应用程序中工作。

于 2015-04-08T13:08:35.927 回答
0

阻止表单提交

 <form method="post">
    <input type="text" id="search">

    </form>
​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
    <script>
        $('input#search').keypress(function(e) {
          if (e.keyCode == '13') {
             e.preventDefault();

           }
        });​
    </script>
于 2012-08-10T08:54:40.850 回答
0

相关问题:Google maps Places API V3 autocomplete - select first option on enter

当我使用谷歌地图自动完成框时,我想让“输入”和“标签”选择第一项。我遵循上面链接的@amirnissim 的解决方案,如果从输入元素按下输入/制表符,则模拟向下箭头键按下。

当我对其进行编码时,我没有将这些输入作为表单的一部分。我不知道如何防止表单在输入键上发送(事实上我就是这样发现这个问题的)但是当我使用自动完成时,我的输入不是表单的一部分。

于 2013-07-22T18:56:17.293 回答