You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap 5中如何禁用ESC按键清空输入框的功能?

解决Angular搜索输入框ESC按键自动清空且不触发ngModelChange的问题

问题分析

HTML5原生的type="search"输入框自带按下ESC键清空内容的默认行为,这个操作由浏览器直接执行,不会走Angular的ngModel绑定更新流程,因此不会触发ngModelChange事件。要解决这个问题,核心是拦截ESC键的默认行为。

解决方案

给输入框添加keydown.escape事件监听,调用$event.preventDefault()阻止浏览器的默认清空动作:

<form class="container" role="search">
    <div class="row">
      <div class="col-12">
        <input name="searchItem" #searchInput="ngModel" ngModel
          (ngModelChange)="searchUserShowCpv(searchInput.value)" 
          (keydown.escape)="$event.preventDefault()"
          class="form-control me-2" type="search"
          placeholder="Search" aria-label="Search">
      </div>
    </div>
  </form>

自定义ESC行为补充

如果之后需要自定义ESC键的操作(比如手动清空输入框并确保触发ngModelChange),可以在组件中实现处理方法:

组件类代码:

onEscapeKey(event: KeyboardEvent) {
  event.preventDefault();
  // 手动修改绑定值,触发ngModelChange
  this.searchItem = '';
}

模板对应修改:

(keydown.escape)="onEscapeKey($event)"

内容的提问来源于stack exchange,提问作者Daniil Peterson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 22:54:19