使用中文输入法时监听input长度产生错误的解决办法

项目场景:

有天在做个人博客时,编辑文章的标题部分想copy一下CSND的处理,后面加个字数统计(因为经常用看习惯了哈哈)。实现方法很简单,监听一下input事件,拿value的长度渲染出来。
在这里插入图片描述


问题描述:

结果发现使用中文输入法时出现了问题,打出来的拼音还没有按确定,但已经被算进value的长度了。
在这里插入图片描述


解决方案:

上网搜了一下,原来input有事件是可以监听到输入法的

compositionstartcompositionend用来监听输入法的开始与结束。

方法找到了,问题就很好解决了,我们设置一个变量来保存输入法开始与结束的状态,然后在input里判断就好了,直接贴代码:

HTML:

<div class="header-input">
  <span>文章标题:</span>
  <div>
    <input 
      v-model="articleInfo.title" 
      maxlength="100" 
      @input="titleChange" 
      @compositionstart="onCompositionStart"
      @compositionend="onCompositionEnd"/>
    <span v-if="titleNum >= 5" v-text="titleNum + '/100'"></span>
    <span v-else>标题不得小于5个字</span>
  </div>
</div>

JS:

titleChange(e) {
  if (!this.isCN) {
    this.titleNum = e.target.value.length
  }
},
onCompositionStart() {
  this.isCN = true
},
onCompositionEnd() {
  this.isCN = false
}

真的是分分钟解决,网络还是太强大了哈哈

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值