HarmonyOS TextInput输入内容限制

输入手机号时,只允许用户输入0-9的数字,展示时,采用手机号的3-4-4格式(135 6655 4444);

a.只设置.type(InputType.PhoneNumber)时,用户可以输入0-9和 ‘+’ ‘-’ ‘ ’,不满足要求;

b.设置.inputFilter(’\d| ‘})时,用户可以输入0-9和‘ ’,不满足要求;

c.设置.inputFilter(’\d’})时,用户可以输入0-9,展示内容非3-4-4格式,不满足要求;

该如何配置才能满足业务要求?

TextInput({ placeholder: '请输入手机号', text: this.inputPhoneVal })
  .type(InputType.PhoneNumber)
  .inputFilter('\\d| '})
.backgroundColor('#00000000')
  .margin({ left: 2 })
  .padding({ left: 10 })
  .maxLength(13)
  .placeholderColor('#879499')
  .height(50)
  .copyOption(CopyOptions.None)
  .fontColor('#666666')
  .fontSize('18fp')
  .flexGrow(1)
  .stateStyles({ pressed: this.onPress })
  .onChange((eventPhoneVal) => {
    try {
      let phoneArr = eventPhoneVal.split("");
      let phoneArrMark: string[] = new Array();
      for (let i = 0; i < phoneArr.length; i++) {
        if (phoneArr[i] != " ") {
          phoneArrMark.push(phoneArr[i]);
        }
      }
      if (phoneArrMark.length > 0) {
        this.showPhoneDel = true;
        if (phoneArrMark.length >= 3) {
          phoneArrMark.splice(3, 0, " ");
        }
        if (phoneArrMark.length >= 8) {
          phoneArrMark.splice(8, 0, " ");
        }
      } else {
        this.showPhoneDel = false;
      }
      let str =  ''
      phoneArrMark.forEach(val=>{
        str += val;
      })
      this.inputPhoneVal = str;
      if (this.isCanBack) {
        let ruleIndex = 0
        this.arr_ruleWinnerData = []
        this.cachePhoneListState = false
        this.arr_showDeleteBtn = false
        this.arr_WinnerData.reverse().forEach((val) => {
          if (val.startsWith(StringDataUtils.replaceAll(eventPhoneVal, " ", "")) && eventPhoneVal != "") {
            this.arr_ruleWinnerData[ruleIndex] = val
            this.cachePhoneListState = true
            ruleIndex++
          }
        })
      }
    } catch (e) {
      EpassConsole.instance.printErr(e)
    }
  })
HarmonyOS
16h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

demo如下:

TextInput({ text: this.text })
  .type(InputType.PhoneNumber)
  .onChange(value => {
    let telNumber: string = value.replace(new RegExp("\\D", "g"), '');
    if (telNumber.length > 11) {
      telNumber = telNumber.substring(0, 11);
    }
    console.info('...telNumber:' + telNumber);
    let tmp = '';
    if (telNumber.length <= 3) {
      tmp = telNumber;
    } else if (telNumber.length <= 7) {
      tmp = telNumber.substring(0, 3) + ' ' + telNumber.substring(3, telNumber.length);
    } else if (telNumber.length <= 11) {
      tmp = telNumber.substring(0, 3) + ' ' + telNumber.substring(3, 7) + ' ' + telNumber.substring(7, telNumber.length);
    }
    if (this.text === tmp && value.length > 0) {
      this.text = tmp + value.charAt(value.length - 1);
    }
    this.text = tmp;
  })
分享
微博
QQ
微信
回复
15h前
相关问题
HarmonyOS TextInput如何阻止其输入内容
46浏览 • 1回复 待解决
如何监听输入输入内容的变化?
396浏览 • 1回复 待解决
HarmonyOS 如何限制TextInput的规则?
441浏览 • 1回复 待解决
HarmonyOS TextInput如何换行输入
38浏览 • 1回复 待解决
TextInput怎么输入中文
3036浏览 • 0回复 待解决
HarmonyOS TextInput如何开启禁止输入
45浏览 • 1回复 待解决
如何过滤textinput组件内容
457浏览 • 1回复 待解决
HarmonyOS 如何获取TextInput输入的值
42浏览 • 1回复 待解决
HarmonyOS textInput 如何清空输入
0浏览 • 0回复 待解决
TextInput如何禁止输入emoj表情
607浏览 • 1回复 待解决