uni-app textarea组件设置font-size后linechange事件异常
uni-app textarea组件设置font-size后linechange事件异常
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | 1 | HBuilderX |
操作步骤:
- 给textarea设置font-size:32rpx;
预期结果:
- 换行 能正常触发linechange事件
实际结果:
- 首次换行未触发,第二次换行才触发
bug描述:
- 当组件设置font-size:32rpx,该组件的linechange事件触发异常
更多关于uni-app textarea组件设置font-size后linechange事件异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
+1+1
更多关于uni-app textarea组件设置font-size后linechange事件异常的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中使用 textarea 组件时,如果你设置了 font-size 样式,可能会导致 linechange 事件的行为异常。这是因为 textarea 的行高和字体大小会影响换行逻辑,而 linechange 事件是基于文本的行数变化触发的。
可能的原因
- 字体大小影响行高:当你设置了
font-size时,行高可能会发生变化,导致textarea的换行逻辑与预期不一致。 - 浏览器或平台的差异:不同的平台(如 iOS、Android)或浏览器对
textarea的行高和换行处理方式可能不同,这可能导致linechange事件的行为不一致。
解决方案
-
手动计算行高:你可以通过设置
line-height来确保行高与字体大小匹配,从而避免换行逻辑异常。textarea { font-size: 16px; line-height: 1.5; /* 根据你的需求调整 */ } -
使用
input事件替代linechange:如果linechange事件的行为不符合预期,你可以尝试使用input事件来监听文本内容的变化,然后手动计算行数。<textarea [@input](/user/input)="handleInput"></textarea>methods: { handleInput(event) { const text = event.detail.value; const lines = text.split('\n').length; console.log('当前行数:', lines); } } -
使用
scrollHeight计算行数:你可以通过scrollHeight属性来动态计算textarea的行数。methods: { handleInput(event) { const textarea = event.target; const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight, 10); const lines = Math.round(textarea.scrollHeight / lineHeight); console.log('当前行数:', lines); } }

