javascript - event.preventDefault() 在 contenteditable div 中似乎对我不起作用
问题描述
我有一些简单的 Angular 7.x 代码,它基本上使用了一个 contenteditable div,我试图在用户按下 [ENTER] 键时阻止默认操作 - 代码看起来很好,但无论我尝试什么,它都是默认的动作例如将光标移动到我试图阻止发生的下一行。
我究竟做错了什么?
// 组件代码
onTextChange(event): void {
// keyCode for the Enter key is 13
if (event.keyCode === 13) {
console.log('enterPressed');
event.stopPropagation();
event.preventDefault();
}
}
// 模板代码
<div contenteditable="true" [(ngModel)]="text" (keyup)="onTextChange($event)" (change)="onTextChange($event)" #textarea></div>
解决方案
使用keypress
or keydown
,它在用户按下键的那一刻被捕获,而不是“在”用户已经按下键之后。此外,您应该在尝试ngModel
在 div 上使用的控制台中出现错误。您可以使用以下方法捕获值$event.target.innerText
:
onTextChange(event): void {
// keyCode for the Enter key is 13
if (event.keyCode === 13) {
console.log('enterPressed', event.target.innerText);
event.preventDefault();
}
}
模板:
<div contenteditable="true" (keydown)="onTextChange($event)">
推荐阅读
- javascript - 如何在 React Native 中制作二维码扫描器?
- java - 带有标题和文本的圆形视图
- r - 如何使用纵向数据集中的年龄变量生成记录进入研究的变量?
- javascript - 仅使用 Javascript 模仿 @keyframes 规则
- c - 如何验证电子邮件属性在 ASP .NET CORE API 中是否唯一?
- google-apps-script - Google App Script if then 语句返回错误值
- android - 类型推断失败。预期类型不匹配:响应
发现延期 > - powershell - add_Click 不执行块内的代码
- javascript - 如何使用 fotorama(嵌入 Bootstrap 3 模态)查看动态图像?
- java - 如何对带注释的方法的每个方法调用执行某些操作?