【发布时间】:2012-08-07 13:17:22
【问题描述】:
我已经构建了一个监听器来防止表单在特殊情况下提交。
我正在使用谷歌地图自动完成 api,基本上我不想在用户按 Enter 并显示“推荐结果框”时提交表单。当用户按下回车键从下拉框中选择一个值而不是提交表单时。
我已经构建了一个可以正确捕获事件的侦听器,但我不知道如何防止表单被提交。
$('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 是可能的
【问题讨论】:
-
e.stopPropagation()和/或return false;之后,解决问题? -
我现在看到你在 body 上添加了监听器。所以keypress事件在输入提交后被触发。尝试查看
.bind并查看第三个参数preventBubble(我不确定,现在无法测试)。否则,我认为您应该在输入字段中附加侦听器或在表单上附加提交侦听器。 -
老实说,我无法从您的建议中弄清楚该怎么做。请将其添加为问题,我将对其进行测试!谢谢
-
完成!我已经过测试并且可以正常工作。
-
您检查过
event.keyCode中确实有任何内容吗?看起来你正在使用 jQuery,所以你应该检查e.which。
标签: javascript forms