var valT = @TextToNumber("123,43");
getComponent("ValRamasa").setValue(valT);
返回的值为0.
,组件ValRamasa
:
<xp:inputText id="ValRamasa" disabled="true">
<xp:this.converter>
<xp:convertNumber type="number"
maxFractionDigits="2" locale="ro">
</xp:convertNumber>
</xp:this.converter>
< xp:this.value><![CDATA[#{viewScope.field_2[index]}]]></xp:this.value>
</xp:inputText>
将转换器设置为我的语言环境,以便:,
是小数点分隔符,.
是千位分隔符。
如果我尝试var valT = @TextToNumber("123.43");
=&gt; 123,43
。
为什么我尝试了上面的例子?我有一个输入字段(whith locale="ro"
),用户可以在其中添加一些数字(,
作为小数点分隔符),有了这个值,我想做一些数学计算,但我注意到了上面的内容问题发生了。
我的计算(我正在使用重复控制):
var number = getComponent("inputText11").getValue();
var procent = getComponent("inputText19").getValue();
for(var i = 0;i<=index ;i++){
// ****** val - is the 'problem' value **** IF val = integer => it works / IF val = decimal ( with , as decimal separator ) => IT don't works
var val = viewScope.field_1[i];
/* <xp:inputText id="inputText23">
<xp:this.value><![CDATA[#{viewScope.field_1[index]}]]></xp:this.value>
<xp:this.converter>
<xp:convertNumber type="number" locale="ro" maxFractionDigits="2">
</xp:convertNumber>
</xp:inputText>*/
//val = val.replace(",",".");
val = @TextToNumber(val);
//number = Number(number) - Number(val);
number -= val;
var garantie = procent*val/100;
}
//var valT = @TextToNumber("123.43");
getComponent("ValRamasa").setValue(number);
getComponent("ValGarantie").setValue(garantie);
答案 0 :(得分:1)
@TextToNumber肯定不是你的问题。
您处理的组件是类型编号,这意味着它是一个数字存储 - 无论是什么&#34;显示&#34;属性。
肯定你在某个地方有一个隐含的文本转换,并尝试将此文本转换回来:
然后将忽略语言环境设置并引发错误。
在您公布的计算代码中,也没有明显错误。
但是:&#34; viewScope.field_1&#34;中的值在哪里?来自?我想,有&#34; Text&#34;在这些变量中,导致了这个问题。
答案 1 :(得分:0)
@TextToNumber不遵循任何区域设置,因为这是一种程序语言。要将数字转换为文本,您的数字必须遵循语言的指导原则,在这种情况下,您必须使用冒号。在您的数字作为小数分隔符。如果您使用此公式,例如在视图列中,您将收到错误消息 - 试试吧! 字段的转换器用于转换和接受键入的值。