【发布时间】:2014-10-10 17:10:58
【问题描述】:
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"); => 123,43。
为什么我尝试了上面的例子?我有一个输入字段(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);
【问题讨论】:
-
TextToNumber 在这里肯定不是您的问题。您处理的组件是数字类型,这意味着它作为数字存储 - 无论任何“显示”属性如何。确保您在某处进行了隐式文本转换并尝试将此文本转换回:然后将忽略区域设置并引发错误。发布您的计算代码,因为有错误。 TextToNumber 按设计工作...
-
@TorstenLink 我更新了我的问题
-
“viewScope.field_1”中的值从何而来?我猜,这些变量中有“文本”...
标签: javascript xpages