iOSの中国語入力方法でスペースを含む文字を入力する場合の解決策を記録します。

#短い単語
ios ネイティブの入力ボックスで、中国語の入力方法を入力すると、入力ボックス内の文字にスペースが入ります。

スペースを削除する

このスペースの文字は\u2006で、これは ? になります。見せる。
これは明らかに要件を満たしていないため、交換することにします。

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

vue の v-model ソリューション

vue プロジェクトで v-model を使用すると、このバグが発生する可能性があります。解決策は、上記のものを使用して置き換えることです。
置換のタイミングとしては、入力ボックスがフォーカスを失ったときに置換することにしました。
次に、値を更新します。

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

setNestedPropertyValue 関数は、オブジェクトがキー チェーンに基づいて割り当て操作を実行する関数です。実装は次のとおりです。

/**
 *  根据属性键链字符串设置属性值
 * @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;
}

エピローグ

終わりました。

おすすめ

転載: blog.csdn.net/qq_43231248/article/details/131664947