【问题标题】:Pressing keys Alt / Alt + Tab ; even Ctrl + A sometimes resets the HTML form按键 Alt / Alt + Tab ;甚至 Ctrl + A 有时也会重置 HTML 表单
【发布时间】:2021-06-20 21:12:04
【问题描述】:

我试图阻止默认行为,但由于某种原因,我有时会看到表单被重置(因此重新提交),一旦按下 ALT 键。在 Brave 中测试系统,但在 Chrome 中检查并获得了保存行为。 有没有人遇到过这个问题,如何预防? 我将附上我现在尝试使用的代码(javascript)。我希望我以正确的方式提出了这个问题,如果没有,请道歉(这是我提出的第一个问题 - 到目前为止我自己管理)。谢谢!

const handleKeys = function (e) {
if (e.shiftKey || e.ctrlKey || e.altKey || e.metaKey || e.repeat) { e.preventDefault(); e.stopPropagation(); }}
window.addEventListener('keydown', function(e) {handleKeys(e);});

【问题讨论】:

  • 您必须找到表单何时重置...有时有时没有帮助。不要编写代码来修复未知问题。
  • Enter 在表单中的输入字段中将提交...如果您不知道,这可能是您的问题。
  • 没有按下键盘上的Enter键,即使按下,也会在所有可以提交的字段中进行检查。我想我可以抓住整个文档/窗口上键盘上按下的键,并且在它被实际使用之前阻止它的默认值。也许我错了。关于重新检查所有输入字段的想法仍然很好。谢谢!

标签: javascript dom key reset alt


【解决方案1】:

感谢 Louys Patrice Bessette 的提示。

解决方案:

  1. 输入字段(搜索 - 通过 id searchBar)专注于窗口加载 window.addEventListener('load', function(e) { if (searchBar) {searchBar.focus();} });

  2. 输入有以下监听器(): if (searchBar) {searchBar.addEventListener('keyup', function(e) {if (e.target.value.length > 0 && e.code === "Enter") {document.querySelector(searchForm).submit();} });}

  3. 在键盘上按“ALT”或“CTRL”键提交输入字段(因为它失去焦点)

  4. 所以我已将代码更改为以下代码,现在一切正常(如果按下其他键,则不会提交表单):

if (searchBar) {searchBar.addEventListener('keyup', function(e) {if 
  if ((e.shiftKey || e.ctrlKey || e.altKey || e.metaKey)) {e.preventDefault(); searchBar.focus(); return;}
    else { 

if (e.target.value.length > 0 && e.code === "Enter") {document.querySelector(searchForm).submit();}  

if (e.target.value.length === 0 && (e.code === "Enter" || e.code === "Backspace" || e.code === "Delete")) {document.querySelector(searchForm).submit();}}
}
});}

【讨论】:

    猜你喜欢
    • 2019-09-16
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多