17

私の Web アプリケーションには、ユーザーがプロジェクトの提案された予算を入力する「予算」という入力フィールドがあります。ユーザーが入力フィールドに入力しているときに、入力された金額を次の形式に自動的に変換するために、マスクされた入力を作成する必要があります。

1 000
10 000
100 000

インターネット全体を検索しましたが、必要なものが見つからないようです。誰かが適切なプラグインを教えてくれたり、カスタム ソリューションを提案してくれませんか?

前もって感謝します。

4

4 に答える 4

17

次のいずれかを試してください。

http://plugins.jquery.com/tag/currency/

これらには、探しているものが含まれている場合もあります。

http://plugins.jquery.com/tag/mask/

于 2011-09-09T09:06:41.877 に答える
8

次のコードを使用して、追加のプラグインを使用せずに通貨形式をアーカイブします。

$('input.money-bank').on('keydown',function(e){    
    // tab, esc, enter
    if ($.inArray(e.keyCode, [9, 27, 13]) !== -1 ||
        // Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) || 
        // home, end, left, right, down, up
        (e.keyCode >= 35 && e.keyCode <= 40)) {
        return;
    }

    e.preventDefault();

    // backspace & del
    if($.inArray(e.keyCode,[8,46]) !== -1){
        $(this).val('');
        return;
    }

    var a = ["a","b","c","d","e","f","g","h","i","`"];
    var n = ["1","2","3","4","5","6","7","8","9","0"];

    var value = $(this).val();
    var clean = value.replace(/\./g,'').replace(/,/g,'').replace(/^0+/, '');   

    var charCode = String.fromCharCode(e.keyCode);
    var p = $.inArray(charCode,a);

    if(p !== -1)
    {
        value = clean + n[p];

        if(value.length == 2) value = '0' + value;
        if(value.length == 1) value = '00' + value;

        var formatted = '';
        for(var i=0;i<value.length;i++)
        {
            var sep = '';
            if(i == 2) sep = ',';
            if(i > 3 && (i+1) % 3 == 0) sep = '.';
            formatted = value.substring(value.length-1-i,value.length-i) + sep + formatted;
        }

        $(this).val(formatted);
    }    

    return;

});

JSFiddle: https://jsfiddle.net/gt2Ly5rt/6/

このスクリプトでは、ユーザーは数字のみを入力し、スクリプトは自動的に小数点と 3 桁区切りを配置します (BRL 形式にハードコードされていますが、カスタマイズできます)。

たとえば、ユーザーが次のように入力した場合:

  • 「1」、次のように表示されます:「0,01」
  • "12" の場合、次のように表示されます: "0,12"
  • 「123」の場合、「1,23」と表示されます
  • 「123456」の場合、「1.234,56」と表示されます

それが誰かを助けることを願っています。

于 2015-04-17T15:32:27.470 に答える
3

Javascriptのみを使用したシンプルなソリューション。

String.prototype.reverse = function () {
        return this.split("").reverse().join("");
    }

    function reformatText(input) {        
        var x = input.value;
        x = x.replace(/,/g, ""); // Strip out all commas
        x = x.reverse();
        x = x.replace(/.../g, function (e) {
            return e + ",";
        }); // Insert new commas
        x = x.reverse();
        x = x.replace(/^,/, ""); // Remove leading comma
        input.value = x;
    }
.currencyinput {
  border-color: #98969a;
    border-style: solid;
    border-width: 0.5px;
    display: inline-block;
}
  

.currencyinput input {   
    border-style: solid solid solid none;
    border-width: 0 0 0 thin;
}
<span class="currencyinput">$<input type="text" onkeyup="reformatText(this)" name="currency"></span>

于 2016-01-22T06:14:04.343 に答える
0

私はこれ ( http://code.google.com/p/jquery-formatcurrency/ ) を本番サイトで使用していますが、問題はなく、API は十分にシンプルです。

于 2011-09-09T09:25:42.580 に答える