Form表单 回车(Enter)提交表单问题

本文介绍了HTML表单中回车键自动提交的机制,以及如何通过AngularJS来管理和阻止这一行为。当表单内没有提交按钮时,仅一个input元素会响应回车提交。要阻止回车提交,可以使用原生的onkeydown事件,并在事件处理函数中阻止默认行为。此外,展示了如何在AngularJS中利用(keyup.enter)事件在input输入框中用回车触发特定事件。
摘要由CSDN通过智能技术生成

Form表单 回车(Enter)提交表单问题

在Form表单中input会自动响应回车事件。这是表单的默认提交动作。

表单的提交行为,可以用两种方式定义,一是form表单自身,二是form表单的button元素(包括type='submit’的input标签,以及type=‘submit’的button元素,button元素type为Submit)。

而点击Enter键会触发form表单提交。这被称为隐式提交,

  • 当用户在一个表单的input标签按enter按钮时,浏览器会找到表单中的第一个提交按钮(submit button),并触发click,同时提交表单。
  • 如果一个表单里没有任何submit button。当这个表单只有一个input元素时,在这个input标签按enter键会隐式触发表单提交,
  • 表单有多个input标签时就不会触发。

如果要阻止回车键提交表单,可以在form标签内添加如下代码

<form class="form-horizontal" id="myForm" novalidate onkeydown="if(event.keyCode==13){return false;}"

ng-keydown 指令不会覆盖元素的原生 onkeydown 事件, 事件触发时,ng-keydown 表达式与原生的 onkeydown 事件将都会执行。

表单使用原生的onkeydown事件,判断按键为回车键时阻止表单提交。input输入框使用了ng-keydown事件

按键敲击的事件顺序:

  1. Keydown
  2. Keypress
  3. Keyup

AngularJS中按键事件

  1. ng-keydown 规定按下按键事件的行为
  2. ng-keypress 规定按下按键事件的行为
  3. ng-keyup 规定松开按键事件的行为

但是此时有一个问题:对于input(type = ‘text’)的输入框在想使用enter来触发事件是没有效果的。

可以通过以下方式来触发

<input class="inputcontext" type="text" (keyup.enter)="addEmail()" nz-input placeholder="輸入Email" formControlName="email" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值