防止表单提交字段输入密钥keydown?

lis*_*aro 4 javascript forms

我已经构建了一个监听器来防止表单在特殊情况下提交.

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

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

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

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

我怎样才能防止它发生?

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

lis*_*aro 5

解决方案实际上非常简单.所有听众似乎都失败了,但是补充说:

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

直接输入就行了.


Dan*_*ott 4

我认为您应该尝试使用类似 \xe2\x80\xa6 的内容来检查容器的可见性

\n\n
$(\'body\').keypress(function(e) \n{\n  if (e.keyCode == \'13\') {\n     e.stopPropagation()\n\n   }\n});\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n