首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端javascript格式化数字(货币)

客户端javascript格式化数字(货币)
EN

Stack Overflow用户
提问于 2016-08-12 04:57:20
回答 1查看 561关注 0票数 0

想要格式化一个以美元为货币的字段。因此,如果用户输入14590.1,它将更改为14,590.10。我甚至不希望有美元符号,但我当前的代码确实有美元符号。

我认为下面的代码还不错,不过我也想检查一个有效的数字,如果无效,就把用户放回原处。

我以为这会很简单,而且会有一个函数来做这件事,但我找不到一个。

有没有比我拼凑的更好的东西?

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xp:view
    xmlns:xp="http://www.ibm.com/xsp/core"
    xmlns:xe="http://www.ibm.com/xsp/coreex">
    <xp:scriptBlock
        id="scriptBlock2"
        type="text/javascript">
        <xp:eventHandler
            id="formatNumber"
            submit="false"
            event="onClientLoad">
        <xp:this.script><![CDATA[   
        formatNumber = function(x) {

                //Must remove $ and any commas
                y = x.replace(',','');
                z = y.replace('$','');

                //Must fix to 2 decimal places
                if ((typeof z) === 'string'){
                    z = parseFloat(z).toFixed(2)}
                else {
                    z = z.toFixed(2)
                }   

                //Now put it back in the field
                XSP.getElementById("#{id:djCurrencyTextBox1}").value = parseFloat(z);
                XSP.partialRefreshPost('#{id:djCurrencyTextBox1}');
            }
]]></xp:this.script>
        </xp:eventHandler>
    </xp:scriptBlock>
    <xp:inputText
        id="djCurrencyTextBox1"
        value="#{viewScope.a}"
        styleClass="pull-right"
        style="width:200px;text-align:right"
        defaultValue="0">
        <xp:this.converter>
            <xp:convertNumber type="currency"></xp:convertNumber>
        </xp:this.converter>
        <xe:this.dojoAttributes>
            <xp:dojoAttribute
                name="input"
                value="text-align: right">
            </xp:dojoAttribute>
        </xe:this.dojoAttributes>
        <xp:eventHandler
            event="onchange"
            submit="false">
            <xe:this.script><![CDATA[val = XSP.getElementById("#{id:djCurrencyTextBox1}").value
formatNumber(val);]]></xe:this.script>
        </xp:eventHandler>
    </xp:inputText>
</xp:view>

我尝试使用dojo,但我不能让它做的是接受一个值,如果用户不输入两位数的美分。如果用户输入1234并按tabs键离开字段,我希望将其修改为1234.00。如果他们输入1234.8并使用Tab键,则应该是1234.80。我我不认为我添加了正确的属性:

代码语言:javascript
复制
<xe:djCurrencyTextBox
        id="djCurrencyTextBox2"
        value="#{doc.prjAmtColumn11}"
        styleClass="pull-right"
        style="width:100px;text-align:right"
        defaultValue="0">
        <xe:this.dojoAttributes>
            <xp:dojoAttribute
                name="input"
                value="text-align: right" />
            <xp:dojoAttribute
                name="constraints"
                value="fractional:yes">
            </xp:dojoAttribute>
            <xp:dojoAttribute
                name="places"
                value="2">
            </xp:dojoAttribute>
        </xe:this.dojoAttributes>
        <xe:this.constraints>
            <xe:djNumberConstraints
                currency="USD"
                fractional="auto"
                type="currency"
                places="2">
            </xe:djNumberConstraints>
        </xe:this.constraints>
        <xp:eventHandler
            event="onchange"
            submit="false">
            <xp:this.script><![CDATA[calculate();]]></xp:this.script>
        </xp:eventHandler>
    </xe:djCurrencyTextBox>
EN

回答 1

Stack Overflow用户

发布于 2016-08-12 22:29:21

Dojo Currency Text Box控件可以执行您想要的操作,它包含在Controls面板中的Dojo form抽屉中的9.0.1中。

霍华德

代码语言:javascript
复制
<xe:djCurrencyTextBox id="djCurrencyTextBox1"
                value="#{document1.NumField_2}"
                promptMessage="enter a US dollar amount">
                <xe:this.constraints>
                    <xe:djNumberConstraints currency="USD"
                        type="currency">
                    </xe:djNumberConstraints>
                </xe:this.constraints>
                <xp:this.converter>
                    <xp:convertNumber></xp:convertNumber>
                </xp:this.converter>
            </xe:djCurrencyTextBox>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38906017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档