# 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.