HarmonyOS 鸿蒙Next TextInput中输入手机号,如何实现按344长度分隔
HarmonyOS 鸿蒙Next TextInput中输入手机号,如何实现按344长度分隔
[@Component](/user/Component)
struct TextInputExample {
[@State](/user/State) text: string = ''
formatPhone(val:string){
if (val) {
console.log("1",val)
let matches = /^(\d{3})(\d{4})(\d{4})$/.exec(val)
if (matches) {
val = matches[1] + " " + matches[2] + " " + matches[3]
console.log("2",val)
}
}
console.log("fffffffrrr",val)
return val
}
build() {
Row(){
Row(){
TextInput({text: this.text, placeholder: '请输入手机号' })
.width('70%')
.height(40)
.cancelButton({
style: CancelButtonStyle.INPUT,
icon: {
size: 45,
src: $r('app.media.icon'),
color: Color.Blue
}
})
.onChange((value: string)=>{
//在这里对字符串处理 变成3-4-4
this.text = this.formatPhone(value)
console.log("fff",value)
})
Button("获取验证码")
.layoutWeight(1)
.height(40)
}
.margin({
top:20,
})
.backgroundColor(Color.Gray)
.width('90%')
.height(40)
}.width("100%")
.height(90)
.justifyContent(FlexAlign.Center)
}
}
方法一:麻烦在判断的地方添加一个判断 当删除到第4或者第9位的时候,让val-=1 即可删除空格
方法二:使用switch 关键代码如下:
[@Entry](/user/Entry)
[@Component](/user/Component)
struct TextPage {
[@State](/user/State) message: string = 'Hello World';
[@State](/user/State) value:string = ''
controller:TextInputController = new TextInputController()
build() {
Row() {
Column() {
Text(this.value).fontSize(20)
TextInput({
placeholder:'请输入',
text:$$this.value,
controller:this.controller
}).onChange(str =>{
str = this.value.toString().replace(/ /g, '');
let len = str.length;
switch (true) {
case len > 11:
str = str.substr(0, 3) + ' ' + str.substr(3, 4) + ' ' + str.substr(7, 4);
this.value = str;
break;
case len > 7:
str = str.substr(0, 3) + ' ' + str.substr(3, 4) + ' ' + str.substr(7);
this.value = str;
break;
case len > 3:
str = str.substr(0, 3) + ' ' + str.substr(3);
this.value = str;
break;
default:
this.value = str;
}
})
}
.width('100%')
}
.height('100%')
}
}
您的需求是要生成344分段的手机号,中间只能以空格隔开,这边测试在删除 第四位和第九位数字时,已经实现对空格的连同删除操作,如果您需要对输入的手机号进行验证后期可以使用replace(/\s/g,'')去除空格,在进行验证;其次可以用InputText的caretPosition属性设置光标的位置,或者使用getCaretOffset方法可以获得TextInput内的光标位置,参考:基础类型定义-公共定义-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者
如果以上不能满足您的需求,请反馈,谢谢
更多关于HarmonyOS 鸿蒙Next TextInput中输入手机号,如何实现按344长度分隔的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html