我有一个接受电话号码的文本框。我想从输入中自动去除所有不是+的特殊字符,并向用户显示我已经这样做了。
我已经尝试过了,但是我什至没有看到任何onChange事件触发,更不用说实际更新我的数据了。
在用于文本输入的OnChange中,我有以下内容:
Substitute(cvarNumberE164ValueNew,"(","");
Substitute(cvarNumberE164ValueNew,"-","");
Substitute(cvarNumberE164ValueNew,".","");
Substitute(cvarNumberE164ValueNew," ","");
UpdateContext({cvarNumberE164ValueNew : cvarNumberE164ValueNew});```
这里的逻辑是“在电话号码中替换这5个常见字符,然后触发应该触发该字段以重新获取值的UpdateContext”。
很显然,我没有正确地做某事,但无法弄清楚是什么。我也曾尝试反复触发UpdateContext来将cvarNumberE164ValueNew
设置为Substitute函数的结果,但无济于事。
修改 我现在正在工作,但是最终有点费解。我必须在文本输入的OnChange中初始化并设置一个全局变量。然后,对该变量进行所有替换,最后,执行UpdateContext,以将全局变量的值设置为Context变量。我的文本输入的Default属性为cvarE164Value,因此至少在所有这些操作之后,PA的数据处理都会自动更新文本输入。
为进行清理,我将全局变量设置为空字符串,因此,如果用户使用我要修剪的数据重复编辑该字段,则逻辑可以可靠地重复自身,因此如果用户重复使用该字段,则该逻辑不会持久化稍后在同一会话中再次进入表单。
Set(gvarNumberE164ValueNew,txtNumberE164ValueNew.Text);
/* prune ) */
Set(gvarNumberE164ValueNew,Substitute(gvarNumberE164ValueNew,")",""));
/* prune ( */
Set(gvarNumberE164ValueNew,Substitute(gvarNumberE164ValueNew,"(",""));
/* prune - */
Set(gvarNumberE164ValueNew,Substitute(gvarNumberE164ValueNew,"-",""));
/* prune - */
Set(gvarNumberE164ValueNew,Substitute(gvarNumberE164ValueNew,".",""));
/* prune SPACE */
Set(gvarNumberE164ValueNew,Substitute(gvarNumberE164ValueNew," ",""));
/* replace cvar with cleaned gvar */
UpdateContext({
cvarE164Value : gvarNumberE164ValueNew
});
Set(gvarNumberE164ValueNew,"");```
答案 0 :(得分:0)
替代函数返回一个文本值。根据您的公式,您可能希望尝试将Substitute函数放在UpdateContext函数中,如下所示:
UpdateContext({cvarNumberE164ValueNew : Substitute(cvarNumberE164ValueNew,"(","")})