HarmonyOS 一个文本输入框,如何只能确保只能输入数字,并且每4位数字间用空格隔开?

输入银行卡号码的场景,只能输入数字,但是每四个数字需要用空格间隔开来。 在onChange中加空格的话上面的输入框会自动去掉空格,不知道如何实现。

HarmonyOS
2024-10-25 11:38:00
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

可以参考下面的代码示例进行实现。

@Entry  
@Component  
struct phone_example {  
  @State submitValue: string = ''  
  @State text : string = ''  
  
  public readonly NUM_TEXT_MAXSIZE_LENGTH = 14;  
  
  isEmpty(str?: string): boolean {  
    return str == 'undefined' || !str || !new RegExp("[^\\s]").test(str);  
  }  
  
  checkNeedNumberSpace(numText: string) {  
    let isSpace: RegExp = new RegExp('[\\+;,#\\*]', 'g');  
    let isRule: RegExp = new RegExp('^\\+.*');  
  
    if (isSpace.test(numText)) {  
      // 如果电话号码里有特殊字符,就不加空格  
      if (isRule.test(numText)) {  
        return true;  
      } else {  
        return false;  
      }  
    }  
    return true;  
  }  
  
  removeSpace(str: string): string {  
    if (this.isEmpty(str)) {  
      return '';  
    }  
    return str.replace(new RegExp("[\\s]", "g"), '');  
  }  
  
  build() {  
    Column() {  
      Row() {  
        TextInput({ text: `${this.text}` }).type(InputType.PhoneNumber).height('48vp')  
          .onChange((number: string) => {  
            let teleNumberNoSpace: string = this.removeSpace(number);  
            if (this.checkNeedNumberSpace(number)) {  
              let regex: RegExp = new RegExp(/(\d{4})(?=\d)/g)  
              this.text = teleNumberNoSpace.replace(regex, '$1 ')  
            } else {  
              this.text = number;  
            }  
          })  
      }  
    }  
    .width('100%')  
    .height("100%")  
  }  
}
分享
微博
QQ
微信
回复
2024-10-25 15:13:50
相关问题
js如何清空一个input 输入框的内容
7616浏览 • 1回复 待解决
如何清空文本输入框的内容
550浏览 • 1回复 待解决
HarmonyOS 输入框无法对齐
285浏览 • 1回复 待解决
HarmonyOS 自定义键盘不能顶起输入框
242浏览 • 1回复 待解决
如何判断一个字符是不是数字
371浏览 • 1回复 待解决