【发布时间】:2019-10-15 18:49:09
【问题描述】:
我有一个接受电话号码的文本框。我想自动从输入中删除任何不是 + 的特殊字符,并向用户显示我已经这样做了。
我已经尝试过了,但我什至没有看到任何 onChange 事件触发,更不用说实际更新我的数据了。
在文本输入的 OnChange 中,我有这个:
Substitute(cvarNumberE164ValueNew,"(","");
Substitute(cvarNumberE164ValueNew,"-","");
Substitute(cvarNumberE164ValueNew,".","");
Substitute(cvarNumberE164ValueNew," ","");
UpdateContext({cvarNumberE164ValueNew : cvarNumberE164ValueNew});```
这里的逻辑是“替换电话号码中的这5个常用字符,然后触发UpdateContext,它应该触发字段重新获取值”。
显然我没有正确地做某事,但不知道是什么。我还尝试反复触发 UpdateContext 以将 cvarNumberE164ValueNew 设置为 Substitute 函数的结果,但无济于事。
编辑 我现在有这个工作,但它最终有点令人费解。我必须在文本输入的 OnChange 中初始化并设置一个全局变量。然后对该变量进行所有替换,最后,执行 UpdateContext 将我的上下文变量设置为全局变量的值。我的文本输入的默认属性是 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,"");```
【问题讨论】:
标签: powerapps