0

次のコードを使用して、テキスト フィールドの値を から にフォーマットしようとしまし(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

正規表現でそれを行う1つの方法を次に示します。ユーザーが入力フィールドに複数の小数点を持っている場合、奇妙な動作をする可能性があることに注意してください。

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

最初の行では、数字と小数点以外のすべての文字が削除されます。
2 つ目は、すべての小数点とその右側の数値を削除します。

ただし、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 に答える
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 に答える
-2

小数をスキップしています。使用する:

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