【发布时间】:2018-12-14 18:22:54
【问题描述】:
我有一个功能可以在达到 25 个字符时更改 textarea 的高度,并且在您编写文本时效果很好。
问题是,我需要一些预定义的回复,并且我在插入文本的模式上执行此操作,但该函数没有检测到并且不会调整大小。如果您插入文本然后写一个字母,它会扩展。
我的功能:
adjust() {
let ionTextarea = document.getElementById('myInput');
let textarea = ionTextarea.getElementsByTagName('textarea')[0];
if (textarea) {
if (textarea.value.length > 25) {
textarea.style.overflow = 'scroll';
textarea.style.height = '200px';
} else {
textarea.style.height = '20px';
}
}return;}
textarea 在两种情况下都返回相同的数据:写入和插入文本(因此样式应该可以工作),但在插入时它不会改变。
我尝试使用 (ionChange)="", (keyup)=""... 但不起作用。
<ion-textarea id="myInput" #chat_input placeholder="Mensaje" [(ngModel)]="editorMsg" rows="1" (ionFocus)="scrollToBottom()" (ionChange)="adjust()"></ion-textarea>
有人可以帮我吗?谢谢
Ps:我用的是离子框架
关闭popover时发送数据:
close(item) {
let data = item;
this.viewCtrl.dismiss(data);
}
用数据填充textarea(并调用resize函数):
popover.onDidDismiss(data => {
this.editorMsg = data;
this.adjust();
})
【问题讨论】:
-
在插入文本的代码中添加对
adjust的调用。没有可以使用的简单事件,但由于您通过代码更改文本,您也知道何时调用adjust:那么就这样做吧。 -
这是一个 hack,但也许(它在不同的上下文中对我有用)在您手动设置这些内容之后,您可以使用 sendkeys 发送一个空格和一个退格键,然后它会知道发生了一些变化
标签: javascript css typescript ionic-framework