HarmonyOS 鸿蒙Next TextInput选用数字键盘时inputFilter处理不对,同时带有小数的字符初始化会把小数点自动去除

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next TextInput选用数字键盘时inputFilter处理不对,同时带有小数的字符初始化会把小数点自动去除

TextInput({ text: this.currentAmountStr, placeholder: ‘输入分账金额…’, controller: this.amountController })
.placeholderColor(Color.Grey)
.placeholderFont({ size: 12, weight: 400 })
.caretColor(Color.Blue)
.width(100)
.height(30)
.textAlign(TextAlign.End)
.fontSize(15)
.fontColor(Color.Black)
.type(InputType.Number)
.borderRadius(0)
.inputFilter("^[0-9.]+$", (e) => {
console.log(JSON.stringify(e))
})
.onChange((value:string)=>{
console.info(“line 465=”+value);
this.currentAmountStr = value;
})

选用了数字键盘类型"InputType.Number", 第一个问题,这个过滤的正则表达式,无论如何小数点都无法通过,但是使用普通带字母的键盘则可以正常运行。第二个问题,给text初始化一个this.currentAmountStr金额8.99,但是调用的时候,onChange里得到的字符是899,小数点没了,改成普通键盘,则是正常。

2 回复

InputType.Number当前的规格便是纯数字键盘,不支持小数点。

可以使用InputType.NUMBER_DECIMAL,带小数点的数字输入模式。支持数字,小数点(只能存在一个小数点)。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-textinput-V5#inputtype枚举说明

若还需要支持特殊字符输入,可以用自定义键盘实现,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkui-331-V5

在HarmonyOS鸿蒙系统中,Next TextInput组件若选用了数字键盘并设置了inputFilter来处理输入内容,遇到小数点初始化被自动去除的问题,通常是因为inputFilter的逻辑设置不当或组件本身的输入行为导致的。

确保inputFilter正确处理小数点的关键在于检查过滤器中的正则表达式或逻辑判断是否正确允许小数点的存在。例如,如果你希望允许用户输入整数和小数(如“123.45”),你的正则表达式应该类似于^[0-9]*(\.[0-9]+)?$

此外,检查TextInput的初始化值是否通过代码或XML布局正确设置,确保小数点不会被在初始化过程中被误处理或去除。如果初始化值包含小数点,确保在设置值后,inputFilter不会将其移除。

同时,考虑到HarmonyOS系统的版本差异和组件的具体实现,建议查阅最新的官方文档或更新日志,确认是否有相关的已知问题或修复。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部