在字符串从全角转换为半角的过程中。如果我使用日语输入(全角),例如同时按“ 2 + 0”,将生成“ 220”。对于其他半角输入来说,这不是问题。请注意,输入数字需要快速输入或同时按下才能得到此结果。
Chrome浏览器:
- 输入'20',结果将为'220'
Safari:
- 输入“ 20”,结果将是“ 220”。如果继续输入“ 30” 结果将是“ 2202032030”
此处的代码:https://jsfiddle.net/wesleywong/ub39wn8d/16/
到目前为止,我已经尝试过使用setTimeout
来延迟输入,但是结果仍然相同。
convertor(value) {
const string = value.replace(
/[\uff01-\uff5e]/g,function(ch) {
return String.fromCharCode(ch.charCodeAt(0) - 0xfee0);
}
).replace(/\u3000/g,'\u0020');
return string;
}
onChange(event) {
let value = event.currentTarget.value;
value = this.convertor(value);
this.setState({
text: value
});
}
我希望'2 + 0'的输出将与其他半角输入相同,为'20'。
演示输入视频: