【uniapp】textarea maxlength字数计算不准确的问题

背景

一个非常常见的功能, 多行文本输入框内增加maxlength最大字数限制500字。但是当我们多行输入并且有换行时,比如到493字时却无论如何输入不了。是因为maxlength计算时,把换行也计算进去了,并且换行符 \n 被计算为 2 个字符textarea 可能会将换行符 \n 计算为2个字符,导致字数限制比预期更早达到上限。

解决办法

监听 input 事件,手动计算实际字符数

你可以使用 @input 监听输入事件,手动去掉 换行符和特殊字符 之后再计算长度,确保用户可以真正输入 500 个字符。

javascript 复制代码
<template>
  <textarea 
    v-model="text" 
    :maxlength="500" 
    @input="handleInput"
    placeholder="请输入内容"
  ></textarea>
  <p>{{ text.length }}/500</p>
</template>

<script>
export default {
  data() {
    return {
      text: ""
    };
  },
  methods: {
    handleInput(event) {
      let value = event.detail.value;
      // 处理换行符问题,确保换行符不多计算
      value = value.replace(/\r\n/g, "\n"); // 统一换行符
      value = value.replace(/\n/g, " "); // 换行符改为空格,不占字符

      if (value.length > 500) {
        this.text = value.substring(0, 500);
      } else {
        this.text = value;
      }
    }
  }
};
</script>

完美解决~~

相关推荐
灵感__idea14 小时前
Hello 算法:贪心的世界
前端·javascript·算法
周末也要写八哥16 小时前
html网页设计适合新手的学习路线总结
html
河北清兮网络科技16 小时前
短剧 APP 产品说明
小程序·uni-app·短剧
killerbasd17 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
ZC跨境爬虫17 小时前
【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫,从单线程到高效并发的全方位升级
前端·爬虫·scrapy·html
爱上好庆祝17 小时前
svg图片
前端·css·学习·html·css3
橘子编程18 小时前
JavaScript与TypeScript终极指南
javascript·ubuntu·typescript
叫我一声阿雷吧18 小时前
JS 入门通关手册(45):浏览器渲染原理与重绘重排(性能优化核心,面试必考
javascript·前端面试·前端性能优化·浏览器渲染·浏览器渲染原理,重排重绘·reflow·repaint
大家的林语冰18 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
jiayong2319 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习