我试图允许用户从gmail粘贴到字段中,并检测换行符。它不需要是一个文本区域,我只想检测换行符。
问题是,当用户粘贴以下内容时。。。剪贴板似乎没有检测到中断(即使用户在gmail中点击了回车键(
Item 1
Item 2
Item 3
要检测到它,用户似乎必须点击回车两次。。。如下所示:
Item 1
Item 2
Item 3
有没有办法从gmail中检测换行符?
下面似乎适用于记事本、收件箱和其他我复制的区域。
Stacklitz演示
组件:
<input type="text" placeholder="paste items here" (paste)="onPaste(i, $event, $event)">
<div *ngIf="itemArray.length > 0">
Item list:
</div>
<div *ngFor="let item of itemArray">
{{item}}
</div>
TS:
itemArray = [];
onPaste(i, event: ClipboardEvent, value) {
let clipboardData = event.clipboardData;
let pastedText = clipboardData.getData('text/plain').split("n");
pastedText.forEach(item => {
item = item.toString()
item = item.replace(/(rn|n|r|sr|r)/gm, "")
this.itemArray.push(item)
})
}
我认为问题在于粘贴的文本有换行符,这些换行符只是回车符(\r(。这不会传输到输入字段中。看起来只是路过。我发现了一种方法,它使用一个文本区域来接管独立于\r\n或\r\n的换行符。然后使用textarea的input事件从中读取文本。因此它是剪贴板的一种代理。我知道这不是一个合适的解决方案,但可能会有所帮助。
我修改了你的斯塔克布利茨。
您可以使用<p>{{item}} </p>
而不是{{item}}
<div *ngFor="let item of itemArray">
<p>{{item}} </p>
</div>
stackBlitz应答
希望这会有所帮助。。。!