记录下ios中文输入法时输入字母带有空格的解决方案

#简言
在ios原生输入框时,中文输入法输入时,输入框中的字母会有空格间隔。

去掉空格

这个空格的字符是 \u2006 ,这个字符在经过编码处理后会变成?显示。
这明显不符合要求,所以我们要把他替换掉。

val.replace(/\u2006/g, "")

vue中v-model解决方案

在vue项目中,使用v-model 有可能碰到这个bug。解决方法利用上面进行替换就行。
替换时机我选择的是输入框失去焦点时进行替换
然后将值更新。

blurFn(event, keyStr) {
      if (event) {
        let val = event.detail.value;
        val = val.replace(/\u2006/g, ""); //  去除ios输入字母时的六分之一空格
        setNestedPropertyValue(this, keyStr, val);
      }
    },
 

setNestedPropertyValue 函数是对象根据key链进行赋值操作的函数。实现如下:

/**
 *  根据属性键链字符串设置属性值
 * @param {*} obj obj 对象
 * @param {*} keyChain  key键链
 * @param {*} value  值
 * @returns
 */
function setNestedPropertyValue(obj, keyChain, value) {
  const keys = keyChain.split("."); // 将属性键链字符串拆分为键数组
  let currentObj = obj;

  // 遍历键数组,逐级访问属性
  for (let i = 0; i < keys.length - 1; i++) {
    const key = keys[i];
    if (!currentObj.hasOwnProperty(key)) {
      // 如果属性不存在,可以选择在这里进行处理,例如抛出错误或创建新的属性
      return;
    }
    currentObj = currentObj[key];
  }

  // 设置最终属性的值
  const lastKey = keys[keys.length - 1];
  currentObj[lastKey] = value;
}

结语

结束了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZSK6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值