PowerApps:如何使Text-Input onChange触发更新文本?

时间:2019-10-15 18:49:09

标签: powerapps

我有一个接受电话号码的文本框。我想从输入中自动去除所有不是+的特殊字符,并向用户显示我已经这样做了。

我已经尝试过了,但是我什至没有看到任何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,"");```

1 个答案:

答案 0 :(得分:0)

替代函数返回一个文本值。根据您的公式,您可能希望尝试将Substitute函数放在UpdateContext函数中,如下所示:

UpdateContext({cvarNumberE164ValueNew : Substitute(cvarNumberE164ValueNew,"(","")})