将数字从文本字段转换为正确的USD

时间:2011-07-01 17:38:52

标签: javascript

我有一个离开文本字段的脚本

onblur="forA();"

将用户输入数字转换为“数字+美元”,但它看起来非常不专业。脚本是:

<script type="text/javascript">
function forA()
{
document.getElementById('field1').value = 
document.getElementById('field2').value +" USD";
}
</script>

因此,这会将“12345.75”转换为“12345.75 USD”。 Ughh。

你知道如何将这个数字转换成适当的自我吗? 12345.75$12,345.75

我的第二个相关问题是徒劳无功......

onclick =“document.getElementById('field1')。value = (Math.round((parseFloat(document.getElementById('11091')。value,2)* 100))/ 100 + Math.round((parseFloat(document.getElementById('1254.75')。value,2)* 100))/ 100).toFixed(2);“

field1(12345.75)的值是否也可以转换为“$ 12,345.75”

提前致谢。

1 个答案:

答案 0 :(得分:1)

function forA() 
{ 
   document.getElementById('field1').value = "$" + addCommas(document.getElementById('field2').value) +" USD"; 
} 

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

查看以下示例:http://jsfiddle.net/CS67m/1/

逗号脚本来自:http://www.mredkj.com/javascript/nfbasic.html 我之前使用它,它就像一个魅力。

以下是您要求的其他功能的已更新示例: http://jsfiddle.net/CS67m/3/

HTML

Number 1<input id="field1" value="$1,230.12"/><br>
Number 2<input id="field2" value="$1,230.12"/><br>
Sum<input id="sum" readonly=true/>
<button id="submit">Add</button>

JS

function forA()
{
  document.getElementById('sum').value = "$" + addCommas(getNumericValue('field1') + getNumericValue('field2')) +" USD";
}

function addCommas(nStr)
{
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}

function getNumericValue(id)
{
    return stripAlphaChars(document.getElementById(id).value);
}
//Source: http://www.27seconds.com/kb/article_view.aspx?id=31
function stripAlphaChars(pstrSource)
{
var m_strOut = new String(pstrSource);
    m_strOut = m_strOut.replace(/[^0-9\\.]/g, '');

    return parseFloat(m_strOut);
}