HarmonyOS 鸿蒙Next关于TextInput组件的inputFilter的用法请教

发布于 1周前 作者 songsunli 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next关于TextInput组件的inputFilter的用法请教

TextInput()
.type(InputType.Normal)
.placeholderColor(Color.Gray)
.maxLength(50) // 限制最大输入字符为50
.fontSize(19)
.inputFilter(’^[\u4e00-\u9fa5a-zA-Z0-9_-]+$’) // 只允许输入中英文以及-_

inputFilter里的正则表达式应该是没什么问题的,但是输入法是可以输入£€¥¢Π¶∆这些字符的,这要怎么处理

6 回复
TextInput({ placeholder: '请输入', text: $$this.message }) // 内部双向绑定
    .type(InputType.Normal)
    .placeholderColor(Color.Gray)
    .maxLength(50) // 限制最大输入字符为50
    .fontSize(19)
    .inputFilter('[A-Za-z0-9_\\-\u4e00-\u9fa5]') // 只允许输入中英文以及-_
    .onChange((value: string) => {
        let reg: RegExp = new RegExp('[^\u4e00-\u9fa5a-zA-Z0-9_-]+$', 'g');
        this.message = value.replace(reg, ''); // 将不符合输入要求的字符替换成空
    })
	```
只能用string.replace去处理了

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

有个笨方法,把这些字符排除掉

 .inputFilter('^(?!.*[£€¥¢Π¶∆])[A-Za-z0-9\u4e00-\u9fa5\-_]+$') <button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

我只是列举了这些特殊字符,可能还会有一些别的没碰到的

正则表达式对啊。 是不是跟测试环境, 模拟器输入法有关呢?

在HarmonyOS中,TextInput组件的inputFilter用于控制用户输入的内容。你可以通过实现InputFilter接口来定义自己的过滤逻辑,比如限制输入长度、只允许特定字符等。在组件的XML布局中直接设置inputFilter可能不直接支持,但你可以在Java或Kotlin代码中,通过编程方式设置TextInputinputFilter属性。确保你的过滤器逻辑正确实现了InputFilterfilter()方法。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部