将十进制数值复制到组件

时间:2014-10-10 05:38:03

标签: javascript xpages

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);

2 个答案:

答案 0 :(得分:1)

@TextToNumber肯定不是你的问题。

您处理的组件是类型编号,这意味着它是一个数字存储 - 无论是什么&#34;显示&#34;属性。

肯定你在某个地方有一个隐含的文本转换,并尝试将此文本转换回来:

然后将忽略语言环境设置并引发错误。

在您公布的计算代码中,也没有明显错误。

但是:&#34; viewScope.field_1&#34;中的值在哪里?来自?我想,有&#34; Text&#34;在这些变量中,导致了这个问题。

答案 1 :(得分:0)

@TextToNumber不遵循任何区域设置,因为这是一种程序语言。要将数字转换为文本,您的数字必须遵循语言的指导原则,在这种情况下,您必须使用冒号。在您的数字作为小数分隔符。如果您使用此公式,例如在视图列中,您将收到错误消息 - 试试吧! 字段的转换器用于转换和接受键入的值。