#短い単語
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;
}
エピローグ
終わりました。