0

我尝试使用以下代码将文本字段值从 to 格式化(N50,000.00 NGN)(50000)但结果不是生成,而是50000生成5000000.

有人可以帮忙吗?

<script type="text/javascript" language="javascript">

    function doWork() {
        var amount = document.getElementsByName('amount');
        var str = amount[0].value;
        var temp = '';
        for (i = 0; i < str.length; i++) {
            if (!isNaN(str[i]))
                temp += str[i];
        }
        amount[0].value = temp;
    }
</script>

<input type="text" name="amount" value="N50,000.00 NGN" />
<input type="button" value="submit" onclick="doWork();">
4

4 回答 4

1

获得所需内容的最简单方法可能是在 for 循环中添加另一个条件:

if (str[i] === '.')
    break;
于 2012-06-19T14:07:15.307 回答
0

让我们看一下您尝试格式化的值。

N50,000.00 NGN所有数字中都不是 NaN。所以你的结果是 5000000 ( 50 000 00)。解决方案是在点符号处停止,例如

function doWork() {
    var amount = document.getElementsByName('amount');
    var str = amount[0].value;
    var temp = '';
    for (i = 0; i < str.length; i++) {
        if (str[i] === '.') break; // there it is
        if (!isNaN(str[i]))
            temp += str[i];
    }
    amount[0].value = temp;
}
于 2012-06-19T14:08:02.983 回答
0

这是使用正则表达式的一种方法。请注意,如果用户在输入字段中有多个小数点,则可能会出现奇怪的行为。

<script type="text/javascript" language="javascript">

    function doWork() {
        var amount = document.getElementsByName('amount');
        amount[0].value = amount[0].value.replace(/[^0-9.]/g, "");
        amount[0].value = amount[0].value.replace(/[.][0-9]*/g, "");
    }
</script>

<input type="text" name="amount" value="N50,000.00 NGN" />
<input type="button" value="submit" onclick="doWork();">

第一行删除除数字和小数点以外的所有字符。
第二个,删除所有小数点和它们右侧的任何数字。

不过,使用 parseInt 和 toFixed 可能会更好:

<script type="text/javascript" language="javascript">

    function doWork() {
        var amount = document.getElementsByName('amount');
        amount[0].value = parseInt(amount[0].value.replace(/[^0-9.]/g, "")).toFixed(0);
    }
</script>

<input type="text" name="amount" value="N50,000.00 NGN" />
<input type="button" value="submit" onclick="doWork();">
于 2012-06-19T14:27:00.890 回答
-2

你跳过了小数点。采用:

if (!isNaN(str[i]) || str[i]=='.')
于 2012-06-19T14:03:31.767 回答