Android Nativescript vue将光标设置在TextInput RTL的末尾
我试图通过编程将光标设置在文本字段的末尾,以模拟RTL文本输入 我的文本字段组件:Android Nativescript vue将光标设置在TextInput RTL的末尾,android,nativescript,nativescript-vue,Android,Nativescript,Nativescript Vue,我试图通过编程将光标设置在文本字段的末尾,以模拟RTL文本输入 我的文本字段组件: 我放了一块手表,它有“面具”的魔力: 值(val){ 设v=parseFloat(val.replace(“R$”,'')。replace(/\./g',)。replace(',',')); this.value_to_btc=(v/parseFloat(appSettings.getString('ticker')).formatMoney('btc',6',',','0); if(val&&this.che
我放了一块手表,它有“面具”的魔力:
值(val){
设v=parseFloat(val.replace(“R$”,'')。replace(/\./g',)。replace(',','));
this.value_to_btc=(v/parseFloat(appSettings.getString('ticker')).formatMoney('btc',6',',','0);
if(val&&this.check_值){
设值=val;
值=值。替换(/\D/g');
如果(value.length==3){
value=value.replace(/(\d{1})(\d{2})/,“$1,$2”);
}else if(value.length==4){
value=value.replace(/(\d{2})(\d{2})/,“$1,$2”);
}else if(value.length==5){
value=value.replace(/(\d{3})(\d{2})/,“$1,$2”);
}else if(value.length==6){
value=value.replace(/(\d{1})(\d{3})(\d{2})/,“$1.$2,$3”);
}else if(value.length==7){
value=value.replace(/(\d{2})(\d{3})(\d{2})/,“$1.$2,$3”);
}else if(value.length==8){
value=value.replace(/(\d{3})(\d{3})(\d{2})/,“$1.$2,$3”);
}else if(value.length==9){
value=value.replace(/(\d{1})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3,$4”);
}else if(value.length==10){
value=value.replace(/(\d{2})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3,$4”);
}else if(value.length==11){
value=value.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3,$4”);
}else if(value.length==12){
value=value.replace(/(\d{1})(\d{3})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3.$4,$5”);
}否则{
value=value.replace(/(\d{10,})(\d{2})/,“$1.$2”);
}
this.value=“R$”+值;
}
this.check\u value=!this.check\u value;//这是为了防止监视回调
if(isAndroid){
console.log(this.value.length-1);
this.$refs.value_field.nativeView.android.setSelection(this.value.length-1)
}
}
问题应该出现在该块中:
if(isAndroid){
console.log(this.value.length-1);
this.$refs.value_field.nativeView.android.setSelection(this.value.length-1)
}
this.value.length
返回大于或等于0的整数值。但是下一行(this.$refs.value\u field.nativeView.android.setSelection(this.value.length-1)
)应该将光标设置到特定索引,该索引是我输入的大小-1
但它总是转到我文本字段的0位置。我遗漏了什么?嗯,找到了解决办法。玩了两个把戏
我的新方法setToEnd
方法:
setToEnd:函数(事件){
设v=parseFloat(this.value.replace(“R$”,“”).replace(/\./g,).replace(“,”,”);
this.value_to_btc=(v/parseFloat(appSettings.getString('ticker')).formatMoney('btc',6',',','0);
设value=this.value;
值=值。替换(/\D/g');
如果(value.length==3){
value=value.replace(/(\d{1})(\d{2})/,“$1,$2”);
}else if(value.length==4){
value=value.replace(/(\d{2})(\d{2})/,“$1,$2”);
}else if(value.length==5){
value=value.replace(/(\d{3})(\d{2})/,“$1,$2”);
}else if(value.length==6){
value=value.replace(/(\d{1})(\d{3})(\d{2})/,“$1.$2,$3”);
}else if(value.length==7){
value=value.replace(/(\d{2})(\d{3})(\d{2})/,“$1.$2,$3”);
}else if(value.length==8){
value=value.replace(/(\d{3})(\d{3})(\d{2})/,“$1.$2,$3”);
}else if(value.length==9){
value=value.replace(/(\d{1})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3,$4”);
}else if(value.length==10){
value=value.replace(/(\d{2})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3,$4”);
}else if(value.length==11){
value=value.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3,$4”);
}else if(value.length==12){
value=value.replace(/(\d{1})(\d{3})(\d{3})(\d{3})(\d{2})/,“$1.$2.$3.$4,$5”);
}否则{
value=value.replace(/(\d{10,})(\d{2})/,“$1.$2”);
}
this.value=“R$”+value+”;
if(isAndroid){
this.$refs.value_field.nativeView.android.setSelection(this.value.length-1);
}
}
这两个变化成功了。希望它能帮助别人。您正在使用哪种设备进行测试?你能分享一个可以复制这个问题的游乐场样本吗?