Enregistrez la solution pour saisir des lettres avec des espaces dans la méthode de saisie chinoise ios

# Mots courts
Dans la zone de saisie native ios, lorsque la méthode de saisie chinoise est entrée, les lettres dans la zone de saisie auront des intervalles d'espace.

supprimer les espaces

Le caractère de cet espace est \u2006 , qui deviendra ? montrer.
Cela ne répond évidemment pas aux exigences, nous allons donc le remplacer.

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

solution de modèle v en vue

Dans le projet vue, l'utilisation de v-model peut rencontrer ce bogue. La solution consiste à utiliser ce qui précède pour le remplacer.
En ce qui concerne le moment du remplacement, j'ai choisi de remplacer lorsque la zone de saisie perd le focus .
Ensuite, mettez à jour la valeur.

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

La fonction setNestedPropertyValue est une fonction permettant aux objets d'effectuer des opérations d'affectation basées sur la chaîne de clés. La mise en œuvre est la suivante :

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

épilogue

c'est fini.

Je suppose que tu aimes

Origine blog.csdn.net/qq_43231248/article/details/131664947
conseillé
Classement