uni-app textarea的maxlength的限制长度与input事件里的e.detail.value.length长度不一致

uni-app textarea的maxlength的限制长度与input事件里的e.detail.value.length长度不一致

操作步骤:

  • textarea的maxlength的限制长度与input事件里的e.detail.value.length长度不一致
  • 将maxlength 设置为5000 ,然后复制一段话到文本框 安卓可以达到5000字数就限制了,但是ios只能达到4976个字符

预期结果:

  • 字数限制正常

实际结果:

  • 字数限制异常

bug描述:

  • textarea的maxlength的限制长度与input事件里的e.detail.value.length长度不一致
  • 将maxlength 设置为5000 ,然后复制一段话到文本框 安卓可以达到5000字数就限制了,但是ios只能达到4976个字符
信息类别 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.0.5
手机系统 iOS
手机系统版本号 iOS 13.4
手机厂商 苹果
手机机型 PBEM00
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

更多关于uni-app textarea的maxlength的限制长度与input事件里的e.detail.value.length长度不一致的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app textarea的maxlength的限制长度与input事件里的e.detail.value.length长度不一致的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是iOS系统对textarea处理的一个已知差异。iOS系统在计算字符长度时会将换行符(\n)计算为2个字符,而Android和Web端则按1个字符计算。建议的解决方案:

  1. 统一使用input事件中的e.detail.value.length来判断长度,而不是依赖maxlength属性

  2. 在代码中手动处理长度限制:

handleInput(e) {
  if(e.detail.value.length > 5000) {
    this.text = e.detail.value.substring(0, 5000)
  }
}
回到顶部