防止按 Enter 在 Angular4 中创建新行

Cro*_*csx 5 html forms input angular

我有一个按 Enter 时提交的 textarea

https://stackblitz.com/edit/angular-uvxifq-uyxteg

<textarea class="message-area" (keyup.enter)="ValidateCommentAndPost(commentErr, $event);" [(ngModel)]="comment" matInput #commentErr="ngModel"></textarea>
Run Code Online (Sandbox Code Playgroud)

我想在按下 Enter 键时禁用新 Line,所以我在网上获取了一些信息并做了 .

ValidateCommentAndPost(ngComment:NgModel, event?:KeyboardEvent){
    event.preventDefault();
    if((ngComment.invalid && (ngComment.dirty || ngComment.touched)) && ngComment.errors) {
        this.ResetComment();
    } else {
        this.PostComment();
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,return false;仍然创建一条白线。

我能做什么?

Din*_*h K 18

添加事件以捕获输入并防止默认行为。将 keydown 事件添加到您的组件 html

<textarea required
(keydown.enter)="onKeydown($event)" (keyup.enter)="ValidateCommentAndPost(commentErr, $event);" pattern="/^[/\S/]+$/i" [(ngModel)]="value" matInput #commentErr="ngModel"></textarea>
Run Code Online (Sandbox Code Playgroud)

并将其添加到您的组件 ts 文件中

onKeydown(event){
      event.preventDefault();
    }
Run Code Online (Sandbox Code Playgroud)

  • 这个很笨啊,谢谢。我完全忘记了新行适用于按键...谢谢 (2认同)