javascript - 如何在提交表单之前检测输入字段上的 ENTER 键按下情况?

标签 javascript html dom-events

请检查以下代码:

https://codepen.io/tkpop777/pen/vYYVBOe

HTML:

<form>
  <input type="text" value="text field 1" />
  <br />
  <input type="text" value="text field 2" id="textfield2" />  
  <br />
  <button>Submit</button>
</form>

JS:

document.querySelector('#textfield2').onkeyup = (e) => {
  e.preventDefault();
  if (e.keyCode == 13) {
    alert('enter key')
  }
}

document.querySelector('form').onsubmit = (e) => {
  e.preventDefault();
  alert('form submitted');
}

如果您在第二个输入字段上按ENTER键,您将收到“表单已提交”警报,而不会收到“回车键”警报。将输入字段移出表单标签会出现“输入键”警报。即使该字段位于表单标签内,我如何才能收到该警报。基本上它应该在表单提交警报之前首先触发。

最佳答案

检查onkeydown而不是onkeyup

document.querySelector('#textfield2').onkeydown = (e) => {
  if (e.keyCode == 13) {
    alert('enter key')
  }
}

document.querySelector('form').onsubmit = (e) => {
  e.preventDefault();
  alert('form submitted');
}

注意:我还从 onkeydown 事件中删除了 e.preventDefault() ,以便随后实际提交表单。

更新的代码笔:https://codepen.io/tkpop777/pen/vYYVBOe

关于javascript - 如何在提交表单之前检测输入字段上的 ENTER 键按下情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58842110/

相关文章:

javascript - 如何根据另一个div的长度添加标签

c# - 更改asp.net中gridview内文本框的背景颜色?

html - 我页面背景中的 html5 canvas 元素?

html - 如何让输入框和图片对齐(或者居中)

javascript - JQuery 取消输入的文本

javascript - 如何在使用 Javascript 更改的输入字段中触发事件

javascript - 不同类型功能的术语

javascript - 天空盒纹理未显示

html - Tornado 静态文件路由

javascript - 禁用浏览器页面的特定事件