Javascript 将十进制数值复制到组件

Javascript 将十进制数值复制到组件,javascript,xpages,Javascript,Xpages,返回的值为0。,组件ValRamasa: var valT = @TextToNumber("123,43"); getComponent("ValRamasa").setValue(valT); @TextTonNumber不遵循任何语言环境设置,因为这是一种程序语言。要将数字转换为文本,您的数字必须遵循语言的指导原则,在这种情况下,您必须使用冒号。以十进制分隔符的形式输入数字。如果您使用此公式,例如在视图列中,您将收到一条错误消息-请尝试! 字段的转换器用于转换和接受键入的值。@Text

返回的值为
0。
,组件
ValRamasa

var valT = @TextToNumber("123,43"); 
getComponent("ValRamasa").setValue(valT);

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

@TextToNumber肯定不是您的问题

您处理的组件类型为number,这意味着它存储为一个数字,而与任何“显示”属性无关

请确保您在某个位置有隐式文本转换,并尝试将此文本转换回:

然后将忽略区域设置,并引发错误

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


但是:“viewScope.field_1”中的值来自哪里?我猜,这些变量中有“文本”导致了这个问题。

我指示用户使用,作为十进制分隔符,因为在这个区域中,我们键入的是241,94,而不是241.94。这就是我使用locale=“ro”来表示type=“number”的输入字段的原因。因此,如果我有一个locale=“ro”的输入字段,并且用户键入1546,55(例如)。单击它时会有一个按钮,会发生一些数学运算。所以,我首先需要将这个1.546,55转换为1546.55,并得到数学计算的最后一个值?不,您不需要任何转换:在内部,它存储为数字,并用点和逗号呈现给用户。。。只要计算一下数字,一切都会好起来的。奥利弗和托尔斯滕是对的。最大小数位数为2且locale=“ro”的转换器仅表示获取此后端存储的数字,将其转换为字符串,并使用“ro”的特定区域设置显示;当您收到输入时,获取提交的值,从“ro”的特定语言环境设置转换回来,并删除任何超过2个小数位。除非您使用的是getComponent().getSubmittedValue(),否则不需要为区域设置编写代码。感谢您的解释。这里的文本编号肯定不是您的问题。您处理的组件类型为number,这意味着它存储为一个数字,而与任何“显示”属性无关。请确保您在某个地方有一个隐式文本转换,并尝试将此文本转换回:然后将忽略区域设置并引发错误。由于存在错误,请发布用于计算的代码。TextToNumber按设计工作…@TorstenLink我更新了我的问题“viewScope.field_1”中的值来自哪里?我猜,在这些变量中有“文本”。。。
<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 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);